当前位置:编程学习 > C/C++ >>

poj 2356鸽笼原理水题

(需要说明的是,我写的代码在有答案时就输出结果了,但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;  
}  

 


补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,