十个小孩围成一圈分糖果,老师分给第一个小孩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;

    }