Hdu5776 字串的和[鸽巢原理]
来源:互联网 发布:ss账号哪里购买好 知乎 编辑:程序博客网 时间:2024/05/01 22:59
题目连接
http://acm.hust.edu.cn/vjudge/problem/440424
Description
Given a sequence, you’re asked whether there exists a consecutive subsequence whose sum is divisible by m. output YES, otherwise output NO
Input
The first line of the input has an integer T ( ), which represents the number of test cases.
For each test case, there are two lines:
1.The first line contains two positive integers n, m ( , ).
2.The second line contains n positive integers x ( ) according to the sequence.
Output
Output T lines, each line print a YES or NO.
Sample Input
2
3 3
1 2 3
5 7
6 6 6 6 6
Sample Output
YES
NO
题意
给出n个数字构成的串,问其中是否存在一个连续字串的和是m的倍数。
题解
对前缀和做取m余运算,可证若存在两个前缀和取余结果相同,则由这两个前缀和构成的字串的和是m的倍数[鸽巢原理可证]。对n为1时要特判一下。
代码
#include<iostream>#include<queue> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<string> #include<cctype> #include<algorithm> #include<vector>using namespace std;const int maxn=100005;int main(){ int t; scanf("%d",&t); while(t--) { int a[maxn]; int b[maxn]; int s[maxn]; memset(b,0,sizeof(b)); int n,m,sum=0;int ok=0; scanf("%d%d",&n,&m); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } s[0]=a[0]; for(int i=1;i<n;i++){a[i]+=a[i-1];s[i]=a[i];} for(int i=0;i<n;i++){s[i]%=m;b[s[i]]++;} for(int i=0;i<=m;i++) { if(b[i]>1){ok=1;break;} if(b[0]==1){ok=1;break;} } if(ok==1)printf("YES\n"); else printf("NO\n"); }return 0;}
0 0
- Hdu5776 字串的和[鸽巢原理]
- hdu5776 sum (鸽巢原理)
- hdu5776
- hdu5776
- Hdu5776 sum 抽屉原理+同余定理
- hdu5776——sum(抽屉原理)
- HDU5776 sum【前缀和+模除】
- 字串和
- 字串和
- hdu5776 sum
- hdu5776 sum
- JavaScript 对象和字串之间的转换
- 字符串的分割和字串截取
- 3查找最长和的数字串
- 字符串中找出递减数,输出最大字串和各数位之和最大的字串之和
- BestCoder Round #85 (hdu5776,hdu5777,hdu5776)
- cmd中的字串替换和字串比较
- Java - 字串和数组
- 设计模式之合成模式
- composer 安装yii2框架
- jQuery 从零开始学习 (五) 动画
- Double
- NSUserDefaults standardUserDefaults使用注意事项
- Hdu5776 字串的和[鸽巢原理]
- 【PAT】卡时专题
- 单例模式
- Android 动画使用 -- 基础
- SDUT2127树-堆结构练习——合并果子之哈夫曼树
- Search Insert Position
- [swift 2.0] swift 2.0 之枚举类型
- python中使用zip函数出现<zip object at 0x02A9E418>
- HDU 3746 Cyclic Nacklace [KMP+循环节]