解题思路:
计算前缀和后取余,余数一致即相差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 人评分
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1162 |
最小公倍数 (C语言代码)浏览:1114 |
母牛的故事 (C语言代码)浏览:739 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)from DQM浏览:773 |
数对 (C语言代码)浏览:762 |
C二级辅导-分段函数 (C语言代码)浏览:659 |
【计算直线的交点数】 (C语言代码)浏览:986 |
盐水的故事 (C语言代码)浏览:1616 |
杨辉三角 (C语言代码)浏览:737 |
众数问题 (C语言代码)浏览:660 |