首页 > 代码库 > poj 3370 Halloween treats

poj 3370 Halloween treats

不懂得详见poj  2356  抽屉原理详解,这题竟然卡精度。。。提交了好几次都WA,改成long long sum[100100] 才对

代码如下:

#include<stdio.h>
#include<string.h>
int flag[100100],a[100100],str[100100];
long long  sum[100100];
int main()
{
  
  int n,i,j,t,chi;
  while(~scanf("%d%d",&chi,&n),n)
  {

    memset(sum,0,sizeof(sum));
    memset(flag,0,sizeof(flag));
    for(i=1;i<=n;i++)
      scanf("%d",&a[i]);
    for(i=1;i<=n;i++)
     {
          sum[i]=sum[i-1]+a[i];
          t=sum[i]%chi;
          if(t==0)
           {
              for(j=1;j<i;j++)
              {
                 printf("%d ",j);
              }
              printf("%d\n",j);
               break;
           }
           else
           {
             if(flag[t]==0)
               {
                  flag[t]=1;
                  str[t]=i;
               }
             else
             {
                
                for(j=str[sum[i]%chi]+1;j<i;j++)
                 { 
                   printf("%d ",j);
                  
                 }
                 printf("%d\n",j);
                  break;
             }   
           }
     }  
  }    
    return 0;
}


poj 3370 Halloween treats