分糖果
10个小孩围成一圈分糖果,老师顺次分给每个人的糖数为12 2 8 22 16 4 10 6 14 20.
然后按下列规则进行调整,所有小孩同时把自己的糖果分一半给右边的小孩,糖块数变奇数的人,
再向老师补要一块,问经过多少次调整后,大家的糖块一样多,且每人多少块?
int main()
{
int a[10] = { 12, 2, 8, 22, 16, 4, 10, 6, 14, 20 };
int b[10] = { 0 };
int w=1;
int i,flag=0;
int count = 0;
while (w==1)
{
flag = 0;
count++;
for (i = 0; i < 10; i++)
{
b[i] = a[i] / 2;
}
for (i = 1; i < 10; i++)
{
a[i] = b[i] + b[i - 1];
}
a[0] = b[0] + b[9];
for (i = 0; i < 10; i++)
{
if (a[i] % 2 != 0)
{
a[i]+=1;
}
}
for (i = 0; i < 10; i++)
{
if (a[i]==a[i+1])
{
flag++;
}
}
if (flag == 9)
w = 0;
}
printf("经过%d次调整,且每个人%d块",count,a[0]);
return 0;
}
在这里插入代码片