题目描述
此题蕴含知识点诸多,待我为你授法。
现在定义区间整除数组a为,数组a中,对于每一个子数组[l,r],子数组中存在l≤x≤r,ax可以整除区间中的所有ai,(l≤i≤r),这样的数组a被称为整除数组。
现在对于长度为n的数组b来说,我们会对他进行一次不保留的操作,操作为对于每个位置上的值都加上d,d满足1≤d≤k,即变为b1+d,b2+d,......,bn+d。现在你需要找到能够把数组b变成整除数组的d,并输出合法d的数量,以及这些合法d的和。
输入格式
第一行输出一个数字T,表示测试样例数量。
对于每个测试样例:
第一行包含两个整数n,k,分别表示数组的长度,和d取值范围的限制。
第二行输出n个数字bi,表示数组b上第i个值。
输出格式
对于每个测试样例:
输出一行,表示答案
样例
3
5 10
7 79 1 7 1
2 1000000000
1 2
1 100
1000000000
3 8
0 0
100 5050
样例解释:
对于第一组数据,1,2,5都为合理答案,数量为3个,总和为8,可以按照题目意思,代入数组中自主验证。
限制
1s, 256mb
数据范围
对于30%的数据,1≤sum(n)≤10,1≤bi,k≤100,1≤T≤1
对于另外30%的数据,1≤sum(n)≤100,1≤bi,k≤109,1≤T≤1
对于100%的数据,1≤sum(n)≤104,1≤bi,k≤109,1≤T≤100