#include"stdio.h"
#include"stdlib.h"
int main(){
int n,i,g=0;
printf("请输入n个小朋友"); //1000>=n>=2
scanf("%d",&n);
int a[n],b[n];
for (i=1;i<=n;i++){
a[i]=rand()%10+1; //为了方便赋值使用随机数
if(a[i]%2==1) i=i-1;
//scanf("%d",&a[i]);自己可以通过输入赋值来测试
}
for (i=1;i<=n;i++){
printf("%d\t",a[i]);
}
printf("\n");
int k=0;
//这里开始循环
while(k<n-1){
k=0;
for(i=1;i<=n;i++){
b[i]=a[i]/2;
}
for(i=1;i<=n;i++){
if(i==1) a[i]=a[i]/2+b[n];
else a[i]=a[i]/2+b[i-1];
}
for(i=1;i<=n;i++){
if(a[i]%2==1){
a[i]=a[i]+1;
g=g+1;
}
}
for(i=1;i<n;i++){
if(a[i]==a[i+1]) k=k+1;
}
for(i=1;i<=n;i++){
printf("%d\t",a[i]);
}
printf("\n");
}
printf("老师补充的数为%d",g);
}
例如输入的n为3 小朋友手上的糖果数为 2 2 4 第一次分一半的糖果数为 1 1 2 各个小朋友手上数量为 3 2 3 ,老师补发过后为 4 2 4 这里补发数为2; 第二次分一半糖果为 2 1 2 ,各个小朋友手上数量为 4 3 3 ,老师补发后为 4 4 4 ,数量相等,接受程序 一共补发4颗糖果。
运行的结果如下: