解题思路:

1、可以先建立一个宏定义  

2、在输入的取值范围下输入数据,否则返回-1  

3、检查所有人的糖果数是否相等  

4、n-1之前的数可以利用循环求出  

5、a[0]为特殊值单独做  

6、给奇数糖的孩子补上糖果,变成偶数。





注意事项:

i的取值范围 


参考代码:

#include<stdio.h>

#define max 100

int a[max];

int main()

{

int n,i,count=0;

scanf("%d",&n);

if(n<=2||n>=100)

return -1;

for(i=0;i<n;i++)//输入糖果 

  scanf("%d",&a[i]);

if(a[i]<2||a[i]>100||(a[i]%2!=0))

return -1;

      }

while(1)

{

for(i=1;i<n;i++)

{

if(a[i]!=a[0])//检查所有小朋友的糖果数是否相等  

break;

}

if(i==n)

break;

int tmp=a[0];

for(i=0;i<n-1;i++)

{

a[i]=(a[i]+a[i+1])/2;//每个小朋友都把自己的糖果分一半给左手边的孩子  

}

a[i]=(a[i]+tmp)/2;

 

 for(i=0;i<n;i++)//一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。

 {

  if(a[i]%2!=0)

  {

  a[i]++;

  count++;

 }

      }

    }

   printf("%d",count);

  return 0;


点赞(3)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论