十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第
1个回答

#include

int main(void)

{

int a[10] = {10, 2, 8, 22, 16, 4, 10, 6, 14, 20};

int i, j, n, tp, tn, t;

n = 0;

while(1)

{

n++;

for(tp = a[0]/2, i=0;i<10;tp = tn, i++)

{

t = a[(i+1)%10];

tn = t/2;

t = tn + tp;/*换过后,糖果数位原来数的一半加左边人的一半*/

if(t % 2 == 1)/*如果是奇数,再要一块*/

t++;

a[(i+1)%10] = t;

}

for(i=0;i<10;i++)/*输出一轮以后所有人的糖果数*/

printf("%d ", a[i]);

printf("n");

for(i=1;i<10;i++)

{

if(a[i] != a[0])

break;

}

if(i==10)

break;

}

printf("经过%d次,大家的糖都是%d块n", n, a[0]);

return 0;

}