poj2356——Find a multiple
2011-03-27 16:52
190 查看
应用抽屉原理,可以判断其必定有解,且求出来的解一定是连续的(当然,还有其他非连续解)。
关键理解:sum[]数组求出来的范围为0~N-1。那么当抽屉为N的时候,N+1个余数中,肯定至少有两个是相同的。
关键理解:sum[]数组求出来的范围为0~N-1。那么当抽屉为N的时候,N+1个余数中,肯定至少有两个是相同的。
#include<iostream> #include<cstring> #include<cstdio> using namespace std; #define maxn 10005 int date[maxn],sum[maxn],vis[maxn]; int main() { int n,i; int k=0; sum[0]=0; memset(vis,false,sizeof(vis)); vis[0]=true; cin>>n; bool flag=true; int position ,mod; for(i=1;i<=n;i++) { cin>>date[i]; if(flag) { k=(k+date[i]%n)%n; if(vis[k]==true) { flag=false; position=i; mod=k; } else{ vis[k]=true; sum[i]=k;} } } for(i=position-1;i>=0;i--) if(sum[i]==mod){k=i;break;} printf("%d/n",position-k); for(i=k+1;i<=position;i++) printf("%d/n",date[i]); return 0; }
相关文章推荐
- Poj 2356(Timus 1032):Find a multiple
- POJ 2356 Find a multiple (抽屉原理)
- poj2356 Find a multiple(鸽巢原理)
- POJ-2356 Find a multiple(鸽巢原理)题目数据太垃圾了!!
- POJ 2356 Find a multiple / 3370 Halloween treats 鸽巢原理
- POJ 2356 Find a multiple (鸽巢原理)
- POJ 2356 Find a multiple (抽屉原理)
- POJ-2356 Find a multiple ----抽屉原理
- POJ 题目2356 Find a multiple(鸽巢原理)
- Find a multiple POJ - 2356
- [POJ 2356]Find a multiple(抽屉原理)
- POJ 2356 Find a multiple【鸽巢原理】
- poj 2356 Find a multiple dfs 爆搜!!!!
- poj 2356 Find a multiple (剩余类,抽屉原理)
- POJ 2356 Find a multiple (鸽巢原理)
- 【POJ】-2356-Find a multiple(抽屉原理&STL)
- Find a multiple POJ - 2356
- Find a multiple 【poj-2356】【抽屉原理】
- POJ 2356 Find a multiple (在n个数组成的数列中找出若干个连续数使它们之和能被n整除)
- POJ 2356 Find a multiple 鸽巢原理pigeon hole题解