hdu1808-Halloween treats(抽屜原理)
阿新 • • 發佈:2018-04-14
抽屜原理 == != || 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(抽屜原理)