简单的模拟,但是要记住分出来的糖果的过程和发糖果的过程要分开不然会出错
ac代码如下
#include <iostream>
#include <memory.h>
using namespace std;
int n;
int getright(int i){
if(i==n)return 1;
else return i+1;
}
int main()
{
int a[100];
int b[100];
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
int sum=0;
while(1){
memset(b,0,sizeof(b));
int count=0;
for(int i=1;i<=n;i++)
if(a[1]!=a[i])count++;
if(count==0)break;
for(int i=1;i<=n;i++){
b[i]=a[i]/2;
a[i]/=2;
}
for(int i=1;i<=n;i++){
int r=getright(i);
a[i]+=b[r];
}
for(int i=1;i<=n;i++){
if(a[i]%2==1){
sum++;
a[i]++;
}
}
}
cout<<sum;
return 0;
}