#include<stdio.h>
int num[110],temp[110];
int main()
{
int n;
int i,j,k;
int ok,sum;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
scanf("%d",&num[i]);
ok=0;
sum=0;
while(!ok)
{
for(i=1;i<=n;i++)
{//通过循环判断相邻两个是否相等及是否数据完全循环比较过
//来判断数据是否都相等
if(num[i]==num[i+1])
{
if(i==n-1)
ok=1;
}
else
break;
}
//一次操作之后num[i]==num[i+1]/2+num[i]/2
//将一次操作分成两步,新建一个数组用来缓冲
for(i=1;i<=n;i++)
{
if(i==1)
temp[n]=num[i]/2;
else
temp[i-1]=num[i]/2;
}
for(i=1;i<=n;i++)
{
num[i]=num[i]/2+temp[i];
if(num[i]%2==1)
{
sum++;
num[i]++;
}
}
}
printf("%d\n",sum);
}
return 0;
}原文:http://blog.csdn.net/wangluoershixiong/article/details/44314351