题目详情
解题代码
#include<iostream>
using namespace std;
typedef long long ll;
const int N =1e6+10;
int n,k;
ll res,s[N],cnt[N];
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
{
scanf("%d",&s[i]);
s[i]+=s[i-1];
}
cnt[0]=1; //本身自己也算一个
for(int i=1;i<=n;i++) //找i结尾之前有多少与i相同
{
res+=cnt[s[i]%k];
cnt[s[i]%k]++;
}
printf("%lld",res);
return 0;
}