POJ-1666-Candy Sharing Game

来源:互联网 发布:杨氏双缝干涉实验数据 编辑:程序博客网 时间:2024/05/16 12:09

题目是说几个孩子站一圈,每次他们同时将自己手中的糖果一半给右边的人,如果他们手中的糖果为偶数,老师会给他们额外的一颗。要求你求出多少次后他们每个人的糖果相等,并且输出糖果数

注意:

1、糖果是同时给。

2、每个人只要糖果为奇数,则老师立即给

代码:

#include<cstdio>#include<cstring>#include<iostream>using namespace std;int n,a[100001],sum,ans;bool Judge(){    for(int i=1;i<n;i++)if(a[i]!=a[i-1])    return false;    return true;}int main(){    while(scanf("%d",&n)&&n)    {ans=0;for(int i=0;i<n;i++)    scanf("%d",&a[i]);while(1){    int ita=a[0]+1;    if(Judge())break;    a[0]=(a[0]+1)/2+(a[n-1]+1)/2;    if(a[0]&1)a[0]++;    for(int i=0;i<n-1;i++)    {int itb=a[(i+1)%n]+1;a[(i+1)%n]=(a[(i+1)%n]+1)/2+ita/2;if(a[(i+1)%n]&1)    a[(i+1)%n]++;ita=itb;    }       ans++;}printf("%d %d\n",ans,a[0]);    }    return 0;}