解题思路:
计算前缀和后取余,余数一致即相差k倍.
注意事项:
c++注意开long long,注意从0开始。
参考代码:
#include<bits/stdc++.h> using namespace std; #define maxx 300000 #define int long long int all[maxx]; int M[maxx]; int ans; signed main() { cin>>n>>k; for(int i=1;i<=n;++i) cin>>all[i]; for(int i=1;i<=n;++i) all[i]+=all[i-1]; for(int i=1;i<=n;++i) all[i]=all[i]%k; for(int i=0;i<=n;++i) ++M[all[i]]; for(int i=0;i<=n;++i) { --M[all[i]]; ans+=M[all[i]]; } cout<<ans; }
0.0分
1 人评分
WU-图形输出 (C++代码)浏览:800 |
1024题解浏览:806 |
A+B for Input-Output Practice (III) (C语言代码)浏览:564 |
1050题解(结构体数组与结构体指针的使用)浏览:1105 |
程序员的表白 (C语言代码)浏览:588 |
简单的a+b (C语言代码)浏览:415 |
敲七 (C语言代码)浏览:2699 |
JAM计数法 (C语言代码)浏览:665 |
A+B for Input-Output Practice (II) (C语言代码)浏览:596 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:500 |