C小加

厚德 博学 求真 至善 The bright moon and breeze
posts - 145, comments - 195, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Ural 1032 Find a Multiple 解题报告

Posted on 2011-11-02 15:32 C小加 阅读(1404) 评论(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;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理