解题思路:
计算前缀和后取余,余数一致即相差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语言代码)浏览:793 |
C语言程序设计教程(第三版)课后习题12.3 (C语言代码)浏览:836 |
C二级辅导-统计字符 (C语言代码)浏览:506 |
C二级辅导-进制转换 (C语言代码)浏览:615 |
九宫重排 (C++代码)浏览:1336 |
小明A+B (C语言代码)浏览:1256 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:1229 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:1259 |
【蟠桃记】 (C语言代码)浏览:666 |
剪刀石头布 (C语言代码)浏览:754 |