首页 > 其他 > 详细

hdu1808-Halloween treats(抽屉原理)

时间:2018-04-14 18:36:54      阅读:249      评论:0      收藏:0      [点我收藏+]

题目大意:

给你两个整数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(抽屉原理)

原文:https://www.cnblogs.com/Fy1999/p/8833668.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!