HDU 1034 Candy Sharing Game

来源:互联网 发布:思途旅游cms源码 编辑:程序博客网 时间:2024/05/19 23:53

查看原题

题意

一排人围坐,每个人先接收左边分来的,再把自己原先的那一份分一半给右边的。最终手上如果是奇数,老师就给一个变成偶数,问要几轮下来每个人手里的都相等,问相等是多少

思路

直接做

代码

#include <iostream>using namespace std;int n;struct peo{    int before,now;}people[1000];int isequal(){    int flag=1;    for(int i=0;i<n-1;i++){        if(people[i].now!=people[i+1].now)flag=0;    }    return flag;}int main(int argc, char *argv[]){    while(cin>>n&&n){        for(int i=0;i<n;i++){            cin>>people[i].now;        }        int num=0;        while(!isequal()){            for(int i=0;i<n;i++){                people[i].before=people[i].now;                if(i==0){                    people[i].now=people[i].now/2+people[n-1].now/2;                } else{                    people[i].now=people[i].now/2+people[i-1].before/2;                }                if(people[i].now%2==1){                    people[i].now+=1;                }            }            num++;        }        cout<<num<<" "<<people[0].now<<endl;    }    return 0;}
0 0
原创粉丝点击