AcWing 3151. 分糖果
原题链接
简单
C++ 代码
#include<iostream>
using namespace std;
const int N=10010;
int arr[N];
int half[N];
int result;
int n;
int judge(int arr[])
{
int num=arr[0];
for(int i=0;i<n;i++)
{
if(num!=arr[i]) return 0;
}
return 1;
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&arr[i]);
bool flag=true;
while(flag==true)
{
if(judge(arr)==1) flag=false;
else
{
for(int i=0;i<n;i++)
{
half[i]=arr[i]/2;//第一步
arr[i]/=2;
}
for(int i=0;i<n-1;i++)
{
arr[i]+=half[i+1];//第二步
}
arr[n-1]+=half[0];
for(int i=0;i<n;i++)
{
if(arr[i]%2!=0)//判断
{
arr[i]++;
result++;
}
}
}
}
printf("%d",result);
return 0;
}