Find a multiple

来源:互联网 发布:四知文言文翻译 编辑:程序博客网 时间:2024/05/21 22:54

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;}