//10个小孩围成一圈分糖果，老师分给第1个小孩10块，第2个小孩2块，第3个小孩8块，第4个小孩22块，第5个小孩16块，第6个小孩4块，第7个小孩10块，第8 个小孩6块，第9个小孩14块，第10个小孩20块。
//然后所有的小孩同时将手中的糖分一半给右边的小孩；糖块数为奇数的人可向老师要一块。问经过这样几次后大家手中的糖块数一样多吗？每人各有多少块糖？


#include<stdio.h>

void print(int s[]);
int judge(int c[]);

int j=0;

int main()
{
    int sweet[10] = { 10, 2, 8, 22, 16, 4, 10, 6, 14, 20 };  /*初始化数组数据*/
    int i, t[10], l;
    printf("child  1   2   3   4   5   6   7   8   9  10\n");
    printf("………………………………………………………………\n");
    printf("time\n");
    print(sweet);  /*输出每个人手中糖的块数*/
    while( judge(sweet) )  /*若不满足要求则继续进行循环*/
    {
        for( i=0; i<10; i++ )  /*将每个人手中的糖分成一半*/
            if(sweet[i]%2 == 0)  /*若为偶数则直接分出一半*/
                t[i] = sweet[i] = sweet[i]/2;
            else  /*若为奇数则加1后再分出一半*/
                t[i] = sweet[i] = (sweet[i]+1)/2;
        for( l=0; l<9; l++ )  /*将分出的一半糖给右(后)边的孩子*/
            sweet[l+1] = sweet[l+1] + t[l];
        sweet[0] += t[9];
        print(sweet);  /*输出当前每个孩子中手中的糖果数*/
    }
   
    return 0;
}

int judge( int c[] )
{
    int i;
    for( i=0; i<10; i++)  /*判断每个孩子手中的糖果数是否相同*/
        if(c[0]!=c[i])
            return 1;  /*不相同返回1*/
    return 0;
}
/*输出数组中每个元素的值*/
void print(int s[])    
{
    int k;
    printf(" %2d:", j++);
    for( k=0; k<10; k++ )
        printf("%4d", s[k]);
    printf("\n");
}


//运行结果：
//child  1   2   3   4   5   6   7   8   9  10
//………………………………………………………………

/*
time
 0:  10   2   8  22  16   4  10   6  14  20
 1:  15   6   5  15  19  10   7   8  10  17
 2:  17  11   6  11  18  15   9   8   9  14
 3:  16  15   9   9  15  17  13   9   9  12
 4:  14  16  13  10  13  17  16  12  10  11
 5:  13  15  15  12  12  16  17  14  11  11
 6:  13  15  16  14  12  14  17  16  13  12
 7:  13  15  16  15  13  13  16  17  15  13
 8:  14  15  16  16  15  14  15  17  17  15
 9:  15  15  16  16  16  15  15  17  18  17
10:  17  16  16  16  16  16  16  17  18  18
11:  18  17  16  16  16  16  16  17  18  18
12:  18  18  17  16  16  16  16  17  18  18
13:  18  18  18  17  16  16  16  17  18  18
14:  18  18  18  18  17  16  16  17  18  18
15:  18  18  18  18  18  17  16  17  18  18
16:  18  18  18  18  18  18  17  17  18  18
17:  18  18  18  18  18  18  18  18  18  18
*/
