6 36 2 2 2 2 2 11 22 20 18 16 14 12 10 8 6 4 2 4 2 4 6 8 0
15 14 17 22 4 8HintThe game ends in a finite number of steps because: 1. The maximum candy count can never increase. 2. The minimum candy count can never decrease. 3. No one with more than the minimum amount will ever decrease to the minimum. 4. If the maximum and minimum candy count are not the same, at least one student with the minimum amount must have their count increase.
#include<stdio.h>
#include<string.h>
int a[10000];
int n;
bool judge(){
for(int i=0;i<n-1;++i){
if(a[i]!=a[i+1]) return false;
}
return true;
}
int main(){
while(~scanf("%d",&n),n){
int ncas=0,i,t1,t2;
for(i=0;i<n;++i) scanf("%d",&a[i]);
while(!judge()){
ncas++;
t2=a[0];
for(i=1;i<=n;++i){
t1=a[i%n];
a[i%n]=a[i%n]/2+t2/2;
t2=t1;
}
for(i=0;i<n;++i)
if(a[i]&1) a[i]++;
}
printf("%d %d\n",ncas,a[0]);
}
return 0;
}版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/qq_18062811/article/details/47401705