现有一个由n个正整数组成的序列a:a1,a2,a3,……,an.
现给我们一个整数x,初始值为0(即x=0),在一次操作中,我们可以执行以下两种操作之一:
(1)
选择一个整数i(1≤i≤n),执行ai=ai+x,然后x加1(x=x+1);
(2)
只执行x加1(x=x+1);
其中,操作(1)对序列中的每个元素最多执行1次,即对应任意一个i,ai=ai+x最多执行一次。
我们的任务是,找到满足以下条件的序列(也称零余数序列)所需要的最少操作次数:序列中的每个元素都是给定整数k的整数倍,即对于任意i, 都有ai%k==0。
第一行只有一个整数t(1≤t≤20000):测试用例的数量。
每个测试用例共两行:
第一行共有两个整数n和k(1≤n≤2*1e5,1≤k≤1e9);
第二行共n个整数a1,a2,a3,……,an(0≤ai≤1e9)。
测试数据确保,所在测试用例的n之和不超过2*1e5.
我们来分析下第一个测试用例:
(1)x=0, a=[1,2,1,3]. 执行操作2,x=x+1=1;
(2)x=1, a=[1,2,1,3]. 选择i=2,执行操作1,a=[1,3,1,3], x=2;
(3)x=2, a=[1,3,1,3]. 选择i=3,执行操作1,a=[1,3,3,3], x=3;
(4)x=3, a=[1,3,3,3]. 选择i=4,执行操作1,a=[1,3,3,6], x=4;
(5)x=4, a=[1,3,3,6]. 执行操作2,x=5;
(6)x=5, a=[1,3,3,6]. 选择i=1,执行操作1,a=[6,3,3,6], x=6;
此时,序列a=[6,3,3,6]已经转换为对k=3的零余数序列,所以最少操作次数为6次。