题意:就是给你N个数,有个x,每次加在N个数中任意一个,然后X++,或者直接X++,x=0开始,问你要多少次后N中所有数字可以%K==0; 题解:首先简单化,把N个数全部%k,一次,这样就好看了,然后我们处理出来的,数字是不是就会有大有小,这个时候我们要从 小的开始处理,为什么,越大得数字是不是越容易接近K,那么N个数字我们可以把他转换为一个环,比如1 1 2,K=3是不是,第一次出现X=2得时候,需要就是可以加到1上,下次出现,是不是就要循环一个K才会出现他的X+k=5,加到第二1上,是不是最后全部就为0了,所以就是找到最小的数并且出现次数最多,然后去处理。
ll a
;
cin
>>a
;
while(a
--)
{
map
<ll
,ll
>mp
;
ll n
,k
;
cin
>>n
>>k
;
ll sum
=0;
for(ll i
=1;i
<=n
;i
++)
{
ll aa
;
cin
>>aa
;
aa
%=k
;
if(!aa
) continue;
sum
=max(sum
,mp
[aa
]*k
+k
-aa
+1);
mp
[aa
]++;
}
cout
<<sum
<<endl
;
}