早教吧 育儿知识 作业答案 考试题库 百科 知识分享

十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块

题目详情
十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次后大家手中的糖的块数一样多?每人各有多少块糖?
▼优质解答
答案和解析
#include <stdio.h>
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;
}
看了十个小孩围成一圈分糖果,老师分...的网友还看了以下: