POJ 2356 Find a multiple( 鸽巢定理简单题 )
链接:传送门
题意:题意与3370类似
注意:注意输出就ok,输出的是集合的值不是集合下标
/*************************************************************************
> File Name: poj2356.cpp
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年04月30日 星期日 12时24分20秒
************************************************************************/
#include<cstdio>
#include<cstring>
using namespace std;
int a[10100] , vis[10100];
int S , N;
void print(int s,int e){
printf("%d\n",e-s+1);
for(int i=s;i<=e;i++) printf("%d\n",a[i]);
}
int main(){
int ok;
while(~scanf("%d",&N)){
ok = 0;
for(int i=1;i<=N;i++) scanf("%d",a+i);
memset(vis,0,sizeof(vis));
S = 0;
for(int i=1;i<=N;i++){
S = ( S + a[i] ) % N;
if( S==0 ){
print( 1 , i ); break;
}
if( vis[S] ){
print( vis[S]+1 , i ); break;
}
vis[S] = i;
}
}
return 0;
}
如要转载请注明转载出处:http://www.cnblogs.com/WArobot