POJ:2356 Find a multiple(鸽巢原理)
来源:互联网 发布:淘宝买家秀链接在哪里 编辑:程序博客网 时间:2024/05/21 22:21
鸽巢原理。
开始只是胡乱蒙了一个结论写的,居然AC了,后来百度发现竟然是鸽巢原理。
http://blog.csdn.net/u011026968/article/details/11564841
这个人写的很好,我摘抄一段。
a1,a2,a3...am是正整数序列,至少存在整数k和r,1<=k<r<=m,使得ak+a(k+1)+...+a(r)是m的倍数。
证明比较简单:
Sk表示前k个数之和,
(1)若Sk%m==0,前k个数就是m的倍数
(2)如果Sn与St模m同余,那么从t+1到n这些数之和模m等于0.
可知此题必定有解。
#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#define MAXN 100005#define MOD 1000000007#define INF 2139062143#define ll long longusing namespace std;int main(){ int N; scanf("%d",&N); int arr[MAXN]; for(int i=0; i<N; ++i) scanf("%d",&arr[i]); int note[MAXN]; memset(note,-1,sizeof(note)); int sum=0; bool out=false; for(int i=0; i<N; ++i) { sum+=arr[i]%N; sum=sum%N; if(sum==0) { out=true; printf("%d\n",i+1); for(int j=0; j<=i; ++j) printf("%d\n",arr[j]); break; } else if(note[sum]!=-1) { out=true; printf("%d\n",i-note[sum]); for(int j=note[sum]+1; j<=i; ++j) printf("%d\n",arr[j]); break; } else note[sum]=i; } if(!out) printf("0\n"); return 0;}
0 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 a multiple(鸽巢原理(抽屉原理))
- POJ 2356 find multiple 鸽巢原理
- Find a multiple (鸽巢原理)
- POJ 2356 Find a multiple [抽屉原理]
- VS2010+QT5.1+opencv2.4.5图像界面第一个程序
- Maven: Could not get the value for parameter encoding for plugin execution default-resources Plugin
- (十一)Menu及其使用
- ArcGIS for Android 例子Offline Editor (BETA)(五)
- VBA for Word 学习笔记(一)
- POJ:2356 Find a multiple(鸽巢原理)
- 两个开源的社会网络分析工具(NodeXL,ORA)
- opencv将图片分成多个256*256像素的小图片
- Java jdbc数据库连接池总结!
- Android仿易信界面SlidingMenu左右滑动
- 学习和应用社会网络分析,为什么要选用Pajek
- windows文件中的中文在ubuntu下乱码
- ThreadPoolExecutor使用和思考
- hdu2003解题报告