#include <iostream>
using namespace std;
int a[100]={0};
//判断所有小朋友的糖果数是否相等
bool CandyIsSame(int a[],int n)
{
for(int i=1;i<n;++i)
{
if(a[i]!=a[i-1])
return false;
}
return true;
}
//判断小朋友的糖果数是否为奇数
bool judgeCandyNum(int candyNum)
{
if(candyNum%2==1)
return true;
else
return false;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;++i)
cin>>a[i];
int numberOfCandy=0;//老师补给的糖果数
while(CandyIsSame(a,n)==false)//每个小朋友的糖果数不相等,继续游戏
{
//从第n-1个小朋友开始计算分配后的个数
int beforeHalf=a[0];//记录上一位小朋友分配前的糖果数,从n-1位开始,初始化为a[0]
for(int i=n-1;i>=0;--i)
{
int now=a[i]/2+beforeHalf/2;//自己糖果数的一半加上上一位的一半
beforeHalf=a[i];//在赋值前更新
if(judgeCandyNum(now)==true)//分配后为奇数就补给一颗
{
numberOfCandy++;
a[i]=now+1;
}
else
a[i]=now;
}
}
cout<<numberOfCandy<<"\n";
return 0;
}
蓝桥杯 分糖果
最新推荐文章于 2024-09-06 18:51:26 发布