【题目描述】
小辉得到了一个包含 n 个数的数列,他要从中选出
两个不同位置的数形成一个数对,要求较左边的数对
k 取余的结果小于等于较右边的数对 k 取余的结
果,
问小辉有多少种选法。
【输入格式】
一行,两个正整数 n 和 k
接着 n 个正整数,为数列的值
【输出格式】
一行,一个正整数,表示答案
【输入样例】
4 6
3 4 5 6
【输出样例】
3
【样例解释】
3,4,5,6 对 6 取模的结果分别为 3,4,5,0,能构成的数对有(3,4)、(3,5)、
(4,5),共 3 个。
【数据范围】
50%的数据,2<=n<=10000,1<=k<=10,数列中每个数的值不超过 1000
100%的数据,2<=n<=1000000,1<=k<=50,数列中每个数的值不超过 1000
此代码80分,求助qwq
#include<bits/stdc++.h>
using namespace std;
const int N=1000005;
int n,k,a[N],sum;
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
a[i]=a[i]%k;
}
for(int i=1;i<n;i++){
for(int j=i+1;j<=n;j++){
if(a[i]<=a[j]) sum++;
}
}
cout<<sum;
return 0;
}