主要是理解题目意思,然后就按照它说的来模拟就好了。
Description
Input
Output
#include<stdio.h>
#include<string.h>
int main(){
int n,i,j,k;
int a[1000];
while(scanf("%d",&n)!=EOF){
if(n==0) break;
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
int num=0,f=1,temp;
while(1){
f=1;
for(i=1;i<n;i++){
if(a[i]!=a[i+1]) {f=0; break;}
}
if(f) break;
//要注意对a[1]的判断,因为它是特别的,要优先保存a[n],防止它变掉;
temp=a[n]/2;
for(i=n;i>1;i--){
a[i]=a[i]/2;
a[i]+=a[i-1]/2;
if(a[i]%2) a[i]++;
}
a[1]=a[1]/2;
a[1]+=temp;
//如果要对学生手中是否含有的糖数是奇数个时,用for一遍是个好方法,毕竟简单好想。
for(i=1;i<=n;i++){
if(a[i]%2) a[i]++;
}
num++;
}
printf("%d %d\n",num,a[1]);
}
}原文地址:http://blog.csdn.net/acmer_hades/article/details/43883921