1. 程式人生 > >hdu1808-Halloween treats(抽屜原理)

hdu1808-Halloween treats(抽屜原理)

抽屜原理 == != || break line can ostream n!

題目大意:

給你兩個整數C和N,再給你N個正數的序列,從中找到若幹數,使得其和剛好是 C

的倍數。輸出這些數的序號。


 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 
 5 int c,n,sum,t,j;
 6 int a[100005],f[100005];
 7 
 8 
 9 int main()
10 {
11     while(scanf("%d%d",&c,&n)&&(c!=0||n!=0))
12     {
13         sum=0
; 14 memset(f,-1,sizeof(f)); 15 for(int i=1;i<=n;i++) 16 { 17 scanf("%d",&a[i]); 18 } 19 for(int i=1;i<=n;i++) 20 { 21 sum+=a[i]; 22 t=sum%c; 23 sum=sum%c;//減小運算 24 25 if(t==0) 26 {
27 for(j=1;j<i;j++) 28 { 29 printf("%d ",j); 30 } 31 printf("%d\n",j); 32 break; 33 } 34 else if(f[t]!=-1)//當余數上一次循環存在時 35 { 36 for(j=f[t]+1;j<i;j++)
37 printf("%d ",j); 38 printf("%d\n",j); 39 break; 40 } 41 f[t]=i;//sum%c的位置i 42 43 } 44 } 45 }

hdu1808-Halloween treats(抽屜原理)