Posted on 2011-11-02 15:32
C小加 阅读(1408)
评论(0) 编辑 收藏 引用 所属分类:
解题报告
鸽巢原理。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAXN=10003;
int a[MAXN];
int b[MAXN];
int main()
{
memset(b,0,sizeof(b));
int n;
cin>>n;
a[0]=0;
int temp,flag=0;
for(int i=1;i<=n;i++)
{
cin>>temp;
if(flag) continue;
a[i]=a[i-1]+temp;
int q=a[i]%n;
if(q==0)
{
flag=1;
cout<<i<<endl;
for(int j=1;j<=i;j++)
{
cout<<a[j]-a[j-1]<<endl;
}
}
else if(b[q])
{
flag=1;
cout<<i-b[q]<<endl;
for(int j=b[q]+1;j<=i;j++)
{
cout<<a[j]-a[j-1]<<endl;
}
}
else b[q]=i;
}
return 0;
}