我叫张小黑
张小黑的挣扎生活
posts - 66,  comments - 109,  trackbacks - 0
http://acm.pku.edu.cn/JudgeOnline/problem?id=3370
鸟巢原理
&&fflush害死人的错
 1#include<iostream>
 2using namespace std;
 3#define Max_N 100001
 4int c,n,i,j,tem;
 5char t;
 6int candy[Max_N];
 7int sum[Max_N];
 8int b[Max_N];
 9int main()
10{
11    
12    sum[0]=0;
13    while(1){
14        scanf("%d%d",&c,&n);
15        getchar();
16        if(!c&&!n)break;
17        if(!c){printf("no sweets\n");continue;}
18        memset(candy,0,sizeof(candy));
19        memset(b,0,sizeof(b));
20        for(i=1;i<=n;i++){
21            while(t=getchar()){//通过getchar的方法来读数
22                if(t==' '||t=='\n')break;
23                candy[i]=10*candy[i]+t-'0';}
24            if(!(candy[i]%c)){//如果读到的数能被c整除,就已经可以了
25                printf("%d\n",i);
26                break;}
27            sum[i]=(sum[i-1]+candy[i])%c;//如果当前读到的所有数之和也满足情况,这样也行
28            if(!sum[i]){
29                for(j=1;j<=i;j++){
30                    printf("%d",j);
31                    if(j!=i)putchar(' ');
32                    else putchar('\n');
33                }
34                break;}
35        }
36        for(j=i+1;j<=n;j++)scanf("%d",&tem);
37        if(i>n)//处理剩下的一众情况
38            for(i=1;i<=n;i++){
39                if(!b[sum[i]])
40                    b[sum[i]]=i;
41                else {
42                    for(j=b[sum[i]]+1;j<=i;j++){
43                        printf("%d",j);
44                        if(j!=i)putchar(' ');
45                        else putchar('\n');
46                    }
47                    break;}}
48
49    }        
50    return 0;
51}
posted on 2008-02-27 22:02 zoyi 阅读(278) 评论(0)  编辑 收藏 引用 所属分类: acm

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


欢迎光临 我的白菜菜园

<2008年2月>
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678

常用链接

留言簿(8)

随笔分类

随笔档案

文章档案

相册

acmer

online judge

队友

技术

朋友

搜索

  •  

最新评论

阅读排行榜

评论排行榜