您的位置:首页 > 理论基础 > 计算机网络

http://poj.org/problem?id=3370

2012-10-19 09:07 489 查看
题意:万圣节时有n个人向m个邻居要糖果,每个邻居所要分化的糖果一定,为了能使要来的糖果能使n个人均分,问是否存在一个连续邻居满足要求,如果满足则输出,否者输出no sweets。

思路:由于n小于等于m,根据雀巢原理,则一定存在一个连续的邻居。

AC代码:

#include<iostream>
#include<string.h>
#include<cstdio>
#define N 100005
#define CLR(arr,val) memset(arr,val,sizeof(arr))
using namespace std;
int s
,flag
;
long long sum
;
void in(int &a)
{
char ch;
while((ch=getchar())>'9'||ch<'0');
for(a=0;ch>='0'&&ch<='9';ch=getchar()) a=a*10+ch-'0';
}
int main()
{
int m,n;
while(1){
in(m),in(n);
if(m+n==0) break;
CLR(s,0);
CLR(sum,0);
CLR(flag,0);
for(int i=1;i<=n;++i){
in(s[i]);
sum[i]=sum[i-1]+s[i];
}
for(int i=1;i<=n;++i){
int x=sum[i]%m;
if(x==0){
for(int j=1;j<=i;++j)
printf("%d ",j);
printf("\n");
break;
}
if(flag[x]){
int y=flag[x];
for(int j=y+1;j<=i;++j)
printf("%d ",j);
printf("\n");
break;
}
flag[x]=i;
}
}return 0;
}


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: