CF1374D.Zero Remainder Array
普及/提高-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an array a consisting of n positive integers.
Initially, you have an integer x=0. During one move, you can do one of the following two operations:
- Choose exactly one i from 1 to n and increase ai by x (ai:=ai+x), then increase x by 1 (x:=x+1).
- Just increase x by 1 (x:=x+1).
The first operation can be applied no more than once to each i from 1 to n.
Your task is to find the minimum number of moves required to obtain such an array that each its element is divisible by k (the value k is given).
You have to answer t independent test cases.
给你一个由 n 个正整数组成的数组 a。
初始时,你有一个整数 x=0。在一次操作中,你可以执行以下两种操作之一:
- 从 1 到 n 中恰好选择一个下标 i,将 ai 增加 x(即 ai:=ai+x),然后将 x 增加 1(即 x:=x+1);
- 仅将 x 增加 1(即 x:=x+1)。
第一种操作对每个下标 i(从 1 到 n)至多只能执行一次。
你的任务是求出使数组中每个元素均能被 k 整除(给定值 k)所需的最少操作次数。
你需要回答 t 个相互独立的测试用例。
输入格式
The first line of the input contains one integer t (1≤t≤2⋅104) — the number of test cases. Then t test cases follow.
The first line of the test case contains two integers n and k (1≤n≤2⋅105;1≤k≤109) — the length of a and the required divisior. The second line of the test case contains n integers a1,a2,…,an (1≤ai≤109), where ai is the i-th element of a.
It is guaranteed that the sum of n does not exceed 2⋅105 (∑n≤2⋅105).
输入的第一行包含一个整数 t(1≤t≤2⋅104),表示测试用例的数量。随后是 t 个测试用例。
每个测试用例的第一行包含两个整数 n 和 k(1≤n≤2⋅105;1≤k≤109),分别表示数组 a 的长度和所需的除数。每个测试用例的第二行包含 n 个整数 a1,a2,…,an(1≤ai≤109),其中 ai 是数组 a 的第 i 个元素。
保证所有测试用例中 n 的总和不超过 2⋅105(即 ∑n≤2⋅105)。
输出格式
For each test case, print the answer — the minimum number of moves required to obtain such an array that each its element is divisible by k.
对于每个测试用例,输出答案——即得到一个所有元素均能被 k 整除的数组所需的最少操作次数。
输入输出样例
输入#1
5 4 3 1 2 1 3 10 6 8 7 1 8 3 7 5 10 8 9 5 10 20 100 50 20 100500 10 25 24 24 24 24 24 24 24 24 24 24 8 8 1 2 3 4 5 6 7 8
输出#1
6 18 0 227 8
说明/提示
Consider the first test case of the example:
- x=0, a=[1,2,1,3]. Just increase x;
- x=1, a=[1,2,1,3]. Add x to the second element and increase x;
- x=2, a=[1,3,1,3]. Add x to the third element and increase x;
- x=3, a=[1,3,3,3]. Add x to the fourth element and increase x;
- x=4, a=[1,3,3,6]. Just increase x;
- x=5, a=[1,3,3,6]. Add x to the first element and increase x;
- x=6, a=[6,3,3,6]. We obtained the required array.
Note that you can't add x to the same element more than once.
考虑示例中的第一个测试用例:
- x=0, a=[1,2,1,3]。仅将 x 增加 1;
- x=1, a=[1,2,1,3]。将 x 加到第二个元素上,并将 x 增加 1;
- x=2, a=[1,3,1,3]。将 x 加到第三个元素上,并将 x 增加 1;
- x=3, a=[1,3,3,3]。将 x 加到第四个元素上,并将 x 增加 1;
- x=4, a=[1,3,3,6]。仅将 x 增加 1;
- x=5, a=[1,3,3,6]。将 x 加到第一个元素上,并将 x 增加 1;
- x=6, a=[6,3,3,6]。我们得到了目标数组。
注意:你不能对同一个元素多次加上 x。
输入解题思路,AI测评打分。不知道怎么写?