问题 5803 --零余数序列

5803: 零余数序列★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 63  解决: 45
[提交][状态][命题人:]

题目描述

现有一个由n个正整数组成的序列aa1,a2,a3,……,an.

现给我们一个整数x,初始值为0(即x=0,在一次操作中,我们可以执行以下两种操作之一:

(1)     选择一个整数i1≤i≤n),执行ai=ai+x,然后x1x=x+1;

(2)     只执行x1x=x+1;

其中,操作(1)对序列中的每个元素最多执行1次,即对应任意一个iai=ai+x最多执行一次。

我们的任务是,找到满足以下条件的序列(也称零余数序列)所需要的最少操作次数:序列中的每个元素都是给定整数k的整数倍,即对于任意i, 都有ai%k==0

输入

第一行只有一个整数t(1≤t≤20000):测试用例的数量。

每个测试用例共两行:

第一行共有两个整数nk1≤n≤2*1e51≤k≤1e9);

第二行共n个整数a1,a2,a3,……,an(0≤ai≤1e9)

     测试数据确保,所在测试用例的n之和不超过2*1e5.

输出

       输出共t行,每个测试用例一行一个整数:将序列a转换成零余数序列所需要的最少操作次数。

样例输入
Copy
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
样例输出
Copy
6
18
0
227
8

提示

我们来分析下第一个测试用例:

1x=0, a=[1,2,1,3]. 执行操作2x=x+1=1

2x=1, a=[1,2,1,3]. 选择i=2,执行操作1a=[1,3,1,3], x=2;

3x=2, a=[1,3,1,3]. 选择i=3,执行操作1a=[1,3,3,3], x=3;

4x=3, a=[1,3,3,3]. 选择i=4,执行操作1a=[1,3,3,6], x=4;

5x=4, a=[1,3,3,6]. 执行操作2x=5;

6x=5, a=[1,3,3,6]. 选择i=1,执行操作1a=[6,3,3,6], x=6;

此时,序列a=[6,3,3,6]已经转换为对k=3的零余数序列,所以最少操作次数为6次。

来源

 

[提交][状态]