CF1374D.Zero Remainder Array
普及/提高-
通过率:0%
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.
输入格式
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 ).
输出格式
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 .
输入输出样例
输入#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.