2014年蓝桥杯c组省题 分糖果 简单

86 阅读1分钟

视频:2014年C++C组题8(JavaA组题8)分糖果_哔哩哔哩_bilibili

题目1.分糖果 - 蓝桥云课 (lanqiao.cn)

这道题我们就按照自身减去一半,再从右手边拿来右手边的一半。尾部的那一个需要特殊处理,它的右手边实际上就是数字的第一个数,这是一个环。

#include<iostream>
using namespace std;
const int N=100;
int a[N];
int ans;
int n;
bool check()
{
	int t=a[0];
	for(int i=1;i<n;++i)
	{
		if(a[i]!=t)return false;
	}
	
	return true;
}
int main()
{
	cin>>n;
    for(int i=0;i<n;++i)
    {
	  scanf("%d",&a[i]);
	}
	
	while(1)  //多轮
	{
		
	    //一轮的处理逻辑
			int t=a[0];
			for(int i=0;i<=n-2;i++)
			{
				a[i]-=a[i]/2;
				a[i]+=a[i+1]/2;
				if((a[i]&1)==1)
				{
				 ans++;	
				 a[i]++;
				}
			}
			a[n-1]-=a[n-1]/2;
			a[n-1]+=t/2;
			if((a[n-1]&1)==1)
			{
			 ans++;	
			 a[n-1]++;
			}
			
			if(check())
			{
				cout<<ans<<endl;
				return 0;
			}
	}

	return 0;
}