代码思路
直接模拟就好,注意每个小朋友拿出的是现有的一半,不是别人给完后的一半
C语言代码
#include<stdio.h>
int n,s[110];
int main()
{
scanf("%d",&n);
for(int i = 0;i < n;i++) scanf("%d",&s[i]);
int res = 0;
while(1)
{
int temp0 = res;
int temp = s[0]/2;
for(int i = 1;i < n;i++)
{
s[i-1] += s[i]/2;
s[i] /= 2;
}
s[n-1] += temp;
s[0] -= temp;
for(int i = 0;i < n;i++)
{
if(s[i] % 2)
{
res++;
s[i]++;
}
}
if(!(res - temp0)) break;
}
printf("%d",res);
return 0;
}
判断好像不太对,分完一轮可能都为偶数,此时老师不用补,但个数不相等