历年上机题-----Candy Sharing Game

思路:就是一道普通的模拟题,但是有以下几点需要注意。

1. 初始时可能有奇数,但是不补充。只有游戏开始以后才补充

2. 如果是奇数,给别人应该是a[i]/2, 留个自己的应该是a[i] - a[i]/2

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+7;
int main()
{
    #ifndef ONLINE_JUDGE
        freopen("in.txt","r",stdin);
        freopen("out.txt","w",stdout);
    #endif
    int a[maxn];
    int new_a[maxn];
    int n;
    while (scanf("%d",&n)!=EOF)
    {
        if(n==0) break;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            // if(a[i]%2) a[i]+=1;
            new_a[i] = a[i];
        }
        int ans=0;
        while(true)
        {
            bool flag=0;
            for(int i=1;i<n;i++)
            {
                if(a[i]!=a[0]){
                    flag=1;
                    break;
                }  
            }
            if(flag==0) break;
            ans++;
            for(int i=0;i<n;i++)
            {
                new_a[i] = (a[(i-1+n)%n]/2 + (a[i]-a[i]/2));
                if(new_a[i]%2) new_a[i]+=1;
            }
            for(int i=0;i<n;i++)
            {
                a[i] = new_a[i];
            }
        }
        cout<<ans<<" "<<new_a[0]<<endl;
    }
    
    return 0;
}
发布了449 篇原创文章 · 获赞 197 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/qq_40774175/article/details/105404560