POJ 3370 万圣节
#include <stdio.h>
#include<string.h>
int n,m,i,s,t;
int a[100009];
int sum[100009];
int hash[100009];
int main()
{
while(scanf("%d%d",&n,&m),n+m)
{
memset(hash,0,sizeof(hash));
for( i=1;i<=m;i++)
{
scanf("%d",&a[i]);
}
s=1;
sum[0]=0;
for(i=1;i<=m;i++)
{
sum[i]=(sum[i-1]+a[i])%n;
if(sum[i]==0)
{
t=i;
break;
}
if(hash[sum[i]]>0)
{
s=hash[sum[i]]+1;
t=i;
break;
}
hash[sum[i]]=i;
}
for(i=s;i<t;i++)
printf("%d ",i);
printf("%d\n",t);
}
return 0;
}
#include<string.h>
int n,m,i,s,t;
int a[100009];
int sum[100009];
int hash[100009];
int main()
{
while(scanf("%d%d",&n,&m),n+m)
{
memset(hash,0,sizeof(hash));
for( i=1;i<=m;i++)
{
scanf("%d",&a[i]);
}
s=1;
sum[0]=0;
for(i=1;i<=m;i++)
{
sum[i]=(sum[i-1]+a[i])%n;
if(sum[i]==0)
{
t=i;
break;
}
if(hash[sum[i]]>0)
{
s=hash[sum[i]]+1;
t=i;
break;
}
hash[sum[i]]=i;
}
for(i=s;i<t;i++)
printf("%d ",i);
printf("%d\n",t);
}
return 0;
}