美文网首页
蓝桥-历届试题 分糖果(终极大水题)

蓝桥-历届试题 分糖果(终极大水题)

作者: myleosu | 来源:发表于2018-03-31 16:46 被阅读0次

    题目描述
    有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:
    每个小朋友都把自己的糖果分一半给左手边的孩子。
    一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。
    反复进行这个游戏,直到所有小朋友的糖果数都相同为止。
    你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
    输入
    程序首先读入一个整数N(2< N< 100),表示小朋友的人数。
    接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
    输出
    要求程序输出一个整数,表示老师需要补发的糖果数。
    样例输入
    3
    2 2 4
    样例输出
    4
    思路:一看一般人都想到是道模拟题,其实还真是...数据太小暴力模拟即可,注意用一个数组来存数据。
    附上我的暴力模拟AC代码:

    #include <iostream>
    #include <cstdio>
    #define MAXN 1000+10
    using namespace std;
    int a[MAXN],b[MAXN];
    int main()
    {
        int cnt = 0,n,flag;
        cin>>n;
        for(int i = 1;i<=n;i++)
            scanf("%d",&a[i]);
        while(1){
            flag = 0;
            for(int i = 2;i<=n;i++)
                if(a[i]!=a[1]) flag = 1;
            if(!flag) break;
            b[0] = a[n]/2;
            for(int i = 1;i<=n;i++){
                b[i] = a[i]/2;
                a[i]/=2;
                a[i]+=b[i-1];
                if(a[i]%2==1){
                    cnt++;
                    a[i]++;
                }
            }
        }
        cout<<cnt;
        return 0;
    }

    相关文章

      网友评论

          本文标题:蓝桥-历届试题 分糖果(终极大水题)

          本文链接:https://www.haomeiwen.com/subject/qczgcftx.html