K倍区间(蓝桥杯c++)
#include<bits/stdc++.h>
using namespace std;
long long a[100010],s[100010];
int main()
{
int n,k;
cin>>n>>k;
long long ans=0;
a[0]=1; //若余0则直接符合条件,因此初始化为1
for(int i=1;i<=n;i++){
int x;cin>>x;
s[i]=(s[i-1]+x)%k;
ans+=a[s[i]]; //同样余数的点有多少个即加上多少
//例如当i=3时%k==1,i=4时%k也等于1,则a[4]-a[3]=k;
a[s[i]]++; //记录相同余数的点
}
cout<<ans;
return 0;
}