#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <stdlib.h>
using namespace std;
int judge(int c[],int n)//函数judge用来判断数组中的数是否全是相等的
{ int i;
for(i = 0;i < n-1; i++)
{
if(c[i] != c[i+1])//如果有一个不相等,那么就返回1,代表还未达到题目要求。
return 1;
}
return 0;//返回0代表数组中所有的数都一样,即所有人的糖果数都相同
}
int main()
{
int N,i;//N个人
int a[10000],b[10000];
while(~scanf("%d",&N))//N个学生
{
if(N == 0)
break;
int sum = 0;//sum是老师吹口哨的次数,初始赋为0
for(i = 0;i < N; i++)//输入N个学生所持有的糖果数目
{
scanf("%d",&a[i]);
}
while(judge(a,N))//如果所有人的糖果数目不完全一样,就继续循环进行操作
{
sum++;//老师吹口哨的次数加1
for(i = 0;i < N; i++)//将每个人的糖果数除以2放置入a,b数组相应的位置
a[i] = b[i] = a[i]/2;
for(i = 0;i < N-1; i++)//进行题目要求的操作
{
a[i+1]=a[i+1]+b[i];//左边人糖果数的一半给右边的人
if(a[i+1]%2 != 0)//给过之后糖果数不是偶数,老师再给这个人一块,使他的糖果数再次为偶数
a[i+1]++;
}
a[0] = a[0] + b[N-1];//N个人围成一个圈,第一个人接受了最后一个人给的一半糖果。
if(a[0]%2 != 0)//同样,第一个人的糖果数如果不是偶数,老师会再给他一块
a[0]++;
}
printf("%d %d\n",sum,a[0]);
}
return 0;
}
HDU:1034 Candy Sharing Game
最新推荐文章于 2019-03-13 14:46:22 发布