#include<stdio.h>
int equal(int child[])//判断每个小孩手上的糖是否相等
{
int i
for(i=1i<10i++)
if(child[i]!=child[i-1])
return 1
return 0
}
void main()
{
int child[10]={10,2,8,22,16,4,10,6,14,20}
int i, tmp0, tmp, sum=0, count=1
while(equal(child)) {
tmp0= child[0]
for(i=1i<10i++) {//循环分糖
if(child[i]%2)
child[i]++
tmp = child[i]
child[i-1]=child[i-1]/2+tmp/2//分糖后
}
if(tmp0%2)
tmp0++
child[9]=child[9]/2+tmp0/2
count++
}
printf("经过%d次后,大家手上都有%d块糖.\n", count, child[0])
}
#include<stdio.h>#define N 20
int n
int equal(int [])
void main()
{
int num=0,count=0,i,t1,t2
int child[N]
printf("请输入小孩数:")
scanf("%d",&n)
printf("请输入每个小孩手中的原始糖数:")
for(i=0i<ni++)
scanf("%d",&child[i])
while(!equal(child))
{
for(i=0i<ni++)
{
if(child[i]%2!=0)
{
child[i]+=1
num+=1
}
}
t1=child[0]
for(i=0i<ni++)
{
t2=child[(i+1)%n]
child[(i+1)%n]/=2
child[(i+1)%n]+=t1/2
t1=t2
}
count+=1
for(i=0i<ni++)
printf("%d ",child[i])
printf("\n")
}
printf("经过%d次交换后糖数相\n调整过程中新发%d颗糖\n糖数是%d颗\n",count,num,child[1])
}
int equal(int child[])
{
int i
for(i=1i<ni++)
if(child[i]!=child[i-1])
return 0
return 1
}
不少问题,改了一下,楼主看看。加了一个每次分完后的结果输出。
根据第二个图片分析可得代码:
#include<stdio.h>int getCandy()
{
int i
for (i = 10 i+=10){
if ((9*(i+1)+171)%100 == 0 && (i+1+9)/10 == (9*(i+1)+171)/100){
return i+1
}
}
return -1
}
int main()
{
int m = getCandy()
int n = m / ((9+m)/10)
printf ("共分成%d份, 共%d学生\n", m, n)
return 0
}