POJ 2356 Find a multiple 鸽巢原理
来源:互联网 发布:linux常用命令vim 编辑:程序博客网 时间:2024/05/22 00:44
Find a multiple
记sum[i] = (sum[i-1] + num[i])%N,显然对于sum[1...N]肯定会分布在0....N-1中,如果出现sum[i] = 0,显然我们已经找到了一组解;如果没有出现,也就是说sum[1...N]的值都分布在1....N-1中,N个数分布在1....N-1中,显然会出现sum[i] = sum[j], 其中i != j;这样我们就可以找到一组解。
#include <cstdio>#include <cstring>const int maxn = 10005;int s[maxn];int app[maxn];int number[maxn];int main(){ int n, i, flag = 0, begin, end; scanf("%d", &n); for(i = 1; i <= n; i ++){ int a; scanf("%d", &a); number[i] = a; s[i] = (s[i-1] + a)%n; if(s[i]==0){ begin = 1; end = i; break; } //这里不需要保存出现几次,只要保存这个值最先出现的下标 //当再次取模到这个点的时候,我们就直接找到了一组解 if(app[s[i]]==0){ app[s[i]] = i; } else{ begin = app[s[i]] + 1; end = i; break; } } printf("%d\n", end - begin + 1); while(begin <= end){ printf("%d\n", number[begin++]); } return 0;}
- POJ 2356 Find a multiple 鸽巢原理
- POJ 2356 Find a multiple 鸽巢原理
- POJ:2356 Find a multiple(鸽巢原理)
- POJ 2356 Find a multiple 鸽巢原理
- POJ 2356 Find a multiple 鸽巢原理
- poj 2356 Find a multiple(组合数学:鸽巢原理)
- poj 2356 Find a multiple[鸽巢原理]
- POJ 题目2356 Find a multiple(鸽巢原理)
- poj 2356 Find a multiple (鸽巢原理妙用)
- poj 2356 Find a multiple(鸽巢原理+标记)
- POJ 2356 Find a multiple(鸽巢原理)
- poj 2356 Find a multiple(鸽巢原理)
- POJ 2356:Find a multiple (鸽巢原理)
- POJ 2356 Find a multiple【鸽巢原理】
- POJ 2356 find multiple 鸽巢原理
- POJ 2356 Find a multiple [抽屉原理]
- POJ-2356 Find a multiple ----抽屉原理
- [POJ 2356]Find a multiple(抽屉原理)
- CSDN专访蒋宇捷:技术管理者应具备哪些能力?
- 5个数求最值
- 生成GUID函数用法
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第20讲_js基本数据类型_js运算符1_学习笔记_源代码图解_PPT文档整理
- java中FileOutputStream和FileInputStream类用法
- POJ 2356 Find a multiple 鸽巢原理
- cocos2dx
- JAVA多线程基础
- 有趣的周长
- 回调函数callback function
- XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较
- 递归删除一个文件夹中的所有内容
- YAML试图用一种比XML更敏捷的方式来完成XML所完成的任务
- Eclipse添加maven之后报错 Eclipse is running in a JRE, but a JDK is required 解决方法