主要是理解题目意思,然后就按照它说的来模拟就好了。
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