#2632. 差异和
差异和
题目描述
在一个遥远的国度,有一个聪明的数学家叫做牛宝宝。他最近发现了一个有趣的数学问题,与一种特殊的数列有关。这个数列有一个特殊的生成方式,每一个数都是由前一个数通过一个特定的递推公式计算出来的。牛宝宝对这个数列的“差异和”非常感兴趣,也就是这个数列中任意两个不同数的差的绝对值之和。
为此牛宝宝有一个函数:
long long GetDiffSum( int a[], int n ) {
long long sum = 0;
int i, j;
for( i = 0; i < n; i++ )
for( j = i + 1; j < n; j++ )
sum += abs( a[i] - a[j] );
return sum;
}
其中a[i]的值可由下面的递推公式得出: a[i] = (K * a[i-1] + C) % 1000007 ,i > 0
现在给出K,C,n,a[0]的值,你需要找出 long long GetDiffSum( int a[], int n ) 这个函数的值
输入格式
第一行仅有一个整数T(T<=100)代表数据组数。 对于每组数据,在一行中有4个正整数依次表示K, C, n ,a[0]
输出格式
对于每组数据,输出函数结果。
2
1 1 2 1
10 10 10 5
1
7136758
对于20%的数据,保证n≤100
对于50%的数据,保证n≤10000
对于100%的数据,保证1≤K,C,a[0]≤10^4 ,2≤n≤10^5
相关
在下列比赛中: