程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> poj 2356鴿籠原理水題

poj 2356鴿籠原理水題

編輯:C++入門知識

(需要說明的是,我寫的代碼在有答案時就輸出結果了,但OJ也是從文件讀入,所以乍一看我的好像在沒輸入完就有結果了,但OJ不知道,其實我是直接拿poj3370的代碼AC的,32MS,O(∩_∩)O)   直接貼代碼  

#include<cstdio>  
#include<cstring>  
using namespace std;  
#define N 100002  
  
int sum[N],pos[N],a[N];  
  
int main()  
{  
  
    int n,i,r,t,j;  
  
    while(~scanf("%d",&n))  
    {  
        memset(pos,-1,sizeof(pos));  
        bool flag=false;  
  
        scanf("%d",&sum[0]);  
        a[0]=sum[0];  
        sum[0]%=n;  
        pos[sum[0]]=0;  
        if(sum[0]==0)  
        {  
            printf("1\n%d\n",sum[0]);  
            flag=1;  
        }  
  
        for(i=1;i<n;i++)  
        {  
            scanf("%d",&sum[i]);  
            if(flag)continue;  
            a[i]=sum[i];  
            sum[i]%=n;  
            sum[i]+=sum[i-1];  
            sum[i]%=n;  
            if(sum[i]==0)  
            {  
                printf("%d\n",i+1);  
                for(j=0;j<=i;j++)  
                    printf("%d\n",a[j]);  
                flag=1;  
                continue;  
            }  
            if(pos[sum[i]]==-1)pos[sum[i]]=i;  
            else  
            {  
                printf("%d\n",i-pos[sum[i]]);  
                for(j=pos[sum[i]]+1;j<=i;j++)  
                    printf("%d\n",a[j]);  
                flag=1;  
            }  
        }  
  
    }  
  
    return 0;  
}  

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved