解题思路:
计算前缀和后取余,余数一致即相差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语言训练-立方和不等式 (C语言代码)浏览:751 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:615 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:559 |
幸运数 (C++代码)浏览:1264 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:577 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:476 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:512 |
简单的a+b (C语言代码)浏览:512 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:468 |
小O的乘积 (C++代码)浏览:520 |