k倍区间给定一个长度为N的数列,A1, A2, … AN,如果其中一段连续的子序列Ai, Ai+1, … Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。
你能求出数列中总共有多少个K倍区间吗?
#include <iostream>
using namespace std;
long long a[100000],b[100000];
int main()
{
int n,k,d,i;
long long sum=0;
cin>>n>>k;
for(i = 1;i <=n;i++)
{
cin>>d;
a[i]=(a[i-1]+d)%k;
b[a[i]]++;}
for(i = 0;i < n;i++){
sum+=b[i]*(b[i]-1)/2;
}
sum+=b[0];
cout<<sum;
return 0;
}