hdu1034(简单模拟)

来源:互联网 发布:手指充电软件下载 编辑:程序博客网 时间:2024/06/06 04:35

模拟的水题

题目是说,n个人坐一圈,开始每个人都有偶数个糖果,如果不相等,老师吹一次哨,每个人就把一半的糖果给右边的人,如果手里有奇数个糖果,老师会再给一个补成偶数,直到所有人糖果数相同。题目知,最后一定能达到相同状态。

多开了一个数组,每次全部换完糖果后判断一次,用了sort从小到大,如果最小的和最大的相等,就是所有人糖果相等了。

交了就完了,也没再整理,有点。。。

不管怎样,反正是ac了

#include <iostream>#include <algorithm>using namespace std;int num[1005],s[1005];int main(){    int n;    while(cin>>n&&n!=0)    {        int temp=0,flag=0;        for(int i=0;i<n;i++)        {            cin>>num[i];            s[i]=num[i];        }        for(int i=0;i<n;i++)        {            if(i==0)                {sort(s,s+n);                if(s[0]==s[n-1])                {                    cout<<flag<<" "<<s[0]<<endl;                    break;                }                else flag++;        }            num[i]/=2;            int a=num[i];            num[i]+=temp;            if(num[i]%2==1&&i!=0)                num[i]++;            s[i]=num[i];            temp=a;            if(i==n-1)            {                    i=0;                    num[0]+=temp;                    if(num[0]%2==1)                        num[0]++;                        s[0]=num[0];                    temp=0;                    i--;                    continue;            }        }    }    return 0;}

0 0