POJ3370 Halloween treats 抽屉原理

来源:互联网 发布:混沌之戒3修改存档数据 编辑:程序博客网 时间:2024/05/29 15:57

    题目是求有没有方案,使得取出的糕点数总和为c的倍数。若有,输出其中一种把其能送出所有糕点的对应的i。

  

#include<stdio.h>#include<string.h>#define maxn 100001int a[maxn],sum[maxn];int vis[maxn];int main(){int n,c,i,k;while(~scanf("%d%d",&c,&n)&&n){memset(vis,0,sizeof(vis));memset(sum,0,sizeof(sum));sum[0]=0;for(i=1;i<=n;i++){scanf("%d",&a[i]);sum[i]=sum[i-1]+a[i];sum[i]%=c;}for(i=1;i<=n;i++){if(!sum[i]){for(int k=1;k<i;k++)printf("%d ",k);printf("%d\n",i);break;}else if(vis[sum[i]]){for(k=vis[sum[i]]+1;k<i;k++)printf("%d ",k);printf("%d\n",i);break;}else vis[sum[i]]=i;}//if(i==n+1)printf("no sweets\n");}return 0;}

0 0
原创粉丝点击