1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#include<stdio.h>
int main()
{
int a,i,j,k,sum=0;
scanf("%d", &a);//输入的几个小朋友
int student[a];
for(i=0;i<a;i++){
scanf("%d",&student[i]);//每个小朋友手上的糖果
}
while(1){
j=1;//另标志位为1,为0是表示不满足条件,需要分糖果
for(i=0;i<a-1;i++){
if(student[i]!=student[i+1]){
j=0;//一旦有一位不相同就标志位置0并跳出这个循环
break;
}
}
if(j==0){//如果不满足条件,开始分糖果
int c=student[0]/2;//第一位的分出糖果数记录一下,留给最后一位同学,因为是围在一起坐的,所以是一个循环
for(i=0;i<a;i++){
student[i]=student[i]/2;//每个同学的糖果数都减半
if(i>=1){
student[i-1]+=student[i];//从0位开始加上后一位同学给的糖果,这样过后就剩最后一个同学是没有人分糖果给他,那么我们一位的同学的糖果就可以给他了
}
}
student[a-1]+=c;//最后一个同学的糖果给他
for(i=0;i<a;i++){//分完糖果如果有同学手上是奇数糖果,就老师就给他一个,+1,并让sum+1记录老师给的糖果数,最后输出
if(student[i]%2!=0){
sum++;//记录
student[i]++;//老师给了一个糖果,所以+1;
}
}
}
else{
printf("%d",sum);//满足条件的情况下j不会置0,进入这个输出后brake跳出while循环,至此整个函数运行完毕
break;
}
}
return 0;
}
|