hdu 1034 Candy Sharing Game

来源:互联网 发布:et软件视频教程 编辑:程序博客网 时间:2024/05/18 02:22

每一轮游戏,围成一圈的每一个学生把自己一半的糖果给右边的人,若某学生最后的糖果数目为奇数,则从老师那里得到一块

问经过多少轮游戏结束(游戏结束时每个学生的糖果数目相同,可证明必然在有限轮后结束)

#include<iostream>#define maxn 1000000using namespace std;int f[maxn];int n;int main(){while(cin>>n&&n){for(int i=0;i<n;i++) cin>>f[i];for(int k=1;;k++){int t=f[n-1]/2;for(int i=0;i<n;i++){int p=t;t=f[i]/2;f[i]=f[i]/2+p;if(f[i]%2) f[i]++;}int j;for(j=1;j<n&&f[j]==f[j-1];j++);if(j==n){cout<<k<<" "<<f[0]<<endl;break;} }}return 0;} 


0 0
原创粉丝点击