用C语言实现《分糖果》

来源:百度知道 编辑:UC知道 时间:2024/05/15 15:16:23
幼儿园有n(<20)个孩子围成一圈分糖果,老师先随机地发给每个孩子若干颗糖果,然后按以下规则调整:每个孩子同时将自己手中的糖果分一半给坐在他右边的小朋友;如共有8个孩子,则第1个将原来的一半分给第2个,第2个将原有的一半分给第3个……第8个将原来的一半分给第1个,这样的平分动作同时进行;若平分前,某个孩子手中的糖果是奇数颗,则必须从老师那里要一颗,使他的糖果变成偶数。小孩人数和每个
小孩的初始数由键盘输入。经过多少次调整,使每个孩子手中的糖果一样多,调整结束时每个孩子有糖果多少颗,在调整过程中老师又新增发了多少颗糖果。

main()
{
int n[20],c=0,t=0; /* t:为老师增发了多少颗糖*/
scanf("有多少个小孩%d",&c);
for(int y=0;y<c;y++)
{
scanf("第"+(y+1)+"个小孩的糖果数为%d",n[y]);
}
bool num=true;
while(num)
{int y=0;
while(num&&(y<c-1))
{
if(n[y]==n[y+1])
num=true;
else
num=flase;
}
if(!num)
{
for(int a=0;a<c-1;a++)
{
if(n[a]/2!==0)
{
n[a]=n[a]+1;
t++;
}
n[a+1]=n[a+1]+n[a]/2;
n[a]=n[a]/2;
if(a==c-1)
{
n[0]=n[0]+n[a]/2;
n[a]=n[a]/2;
}
}
}
while(num&&(y<c-1))
{
if(n[y]==n[y+1])
num=true;
else
num=flase;
}
}

printlf("调整后,老师增发了"+%d+"颗糖",t);
printlf("整个过程,共经历了"+%d+"次",);
printlf("调整后, 每个孩子有"+%d+"颗糖");
}

main()<