http://poj.org/problem?id=2356
// File Name: poj2356.cpp // Author: bo_jwolf // Created Time: 2013年10月15日 星期二 11:18:14 #include<vector> #include<list> #include<map> #include<set> #include<deque> #include<stack> #include<bitset> #include<algorithm> #include<functional> #include<numeric> #include<utility> #include<sstream> #include<iostream> #include<iomanip> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<ctime> using namespace std; const int maxn = 10005; int sum[ maxn ], num[ maxn ]; int visit[ maxn ]; int main(){ int n; while( cin >> n ){ memset( sum, 0, sizeof( sum ) ); memset( visit, -1, sizeof( visit ) ); sum[ 0 ] = 0; for( int i = 0; i < n; ++i ) cin >> num[ i ]; // cout << "aaaaaaaaaaaaaaaaaaaaaa" << endl; for( int i = 0; i < n; ++i ){ sum[ i + 1] = ( sum[ i ] + num[ i ] ); // cout << "bbbbbbbbbbbbbbbbbbbbb" << endl; if( sum[ i + 1] % n == 0 ){ cout << i + 1<< endl; for( int j = 0; j <= i; ++j ){ cout << num[ j ] << endl; } // cout << "aaaaaaaaaaaaaaaaa" << endl; break; } { if( visit[ sum[ i + 1 ] % n ] != -1 ){ cout << i - visit[ sum[ i + 1 ] % n ]<< endl; for( int j = visit[ sum[ i + 1 ] % n ] + 1; j <= i; ++j ){ cout << num[ j ] << endl; } //cout << "ccccccccccccccccccccc" << endl; break; //cout << sum[ i + 1 ] % n << endl; } } visit[ sum[ i + 1] % n ] = i; } } return 0; }