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