标签:
目说的是一个分糖果的游戏,n个学生围成一圈,每个人手上有a[i]个糖果,每一轮游戏开始时,学生手中的糖果都是偶数,他们都把自己手中一半的糖果分给他右边的同学。分完后手中糖果数是奇数的,老师会给他一颗糖果。如果所有人手中的糖果数都一样 游戏结束。
输出总共进行了多少轮游戏 还有最后学生手中的糖果数。
1 #include <iostream> 2 using namespace std; 3 int f(int a[],int n) //判断是否分配结束 4 { 5 int i; 6 for(i=0;i<n-1;i++) 7 if(a[i]!=a[i+1]) 8 return 1; 9 return 0; 10 } 11 int main() 12 { 13 int n; 14 15 while(cin>>n&&n) 16 { 17 int a[500],i,x=0,y; 18 for(i=0;i<n;i++) 19 cin>>a[i]; 20 while(f(a,n)) 21 { 22 x++; 23 y=a[n-1]/2; 24 for(i=n-1;i>0;i--) 25 { 26 a[i]=a[i]/2+a[i-1]/2; 27 if(a[i]%2) 28 a[i]++; 29 } 30 a[0]=a[0]/2+y; 31 if(a[0]%2) 32 a[0]++; 33 } 34 cout<<x<<" "<<a[0]<<endl; 35 } 36 }
标签:
原文地址:http://www.cnblogs.com/a1225234/p/4521187.html