AcWing 1230. K倍区间
原题链接
中等
作者:
牛奶小柒Luke
,
2021-03-24 20:09:48
,
所有人可见
,
阅读 279
不难看出这题用一维前缀和求k倍数的个数
可能会爆int
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 1e5 + 10;
LL s[N],a[N];
int n,k;
int cnt[N];
int main(){
scanf("%d%d",&n,&k);
for(int i = 1;i <= n;++i){
scanf("%lld",&a[i]);
s[i] = s[i - 1] + a[i];
}
cnt[0] = 1;
LL res = 0;
for(int i = 1;i <= n;++i){
res += cnt[s[i] % k];
cnt[s[i] % k]++;
}
printf("%lld\n",res);
return 0;
}