解题思路:
话不多说,看注释
注意事项:
分糖果时,是同时分。所以刚刚得到的糖果不拿来分
参考代码:
#include<stdio.h>
int main(){
int n,i,a[100];
while(scanf("%d",&n)==1){
int t=0;
for(i=0;i<n;i++)scanf("%d",&a[i]);
while(1){ //当全部人有相同糖果时,跳出
int c=0,k;
for(i=0;i<n-1;i++){ //判断是否全部相等,用c作标记
if(a[i]!=a[i+1]){
c=1;break;
}
}
if(c){
k=0; //暂时记录每个人要分出糖果
for(i=0;i<n-1;i++){
k=(a[i]-k)/2; //计算要分得糖果,减去刚得到的
a[i]-=k; //分去后剩下的
a[i+1]+=k; //下一个小朋友的到后总的糖果
}
k=(a[i]-k)/2; //最后一个小朋友,分给第一个小朋友
a[i]-=k;
a[0]+=k;
for(i=0;i<n;i++){ //一轮过后,基数个糖果的小朋友数量加一
if(a[i]%2==1){
t++; //老师发一个
a[i]+=1;
}
}
}
else{
break;
}
}
printf("%d\n",t);
}}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复