• hdu-1034(模拟+小朋友分糖)


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1034

    参考文章:https://blog.csdn.net/zyy173533832/article/details/37990885

    题意:如果老师要每个小朋友的糖的数目相同,进行如下调整:从0号小朋友开始,将自己的糖的一半分给他右手边的小朋友,

    如果糖数是奇数,老师就给他一块糖。

    求经过多少次操作得到每个小朋友的糖的数目相同,还有小朋友们糖的数目相同的时候每个小朋友得到多少糖。

    思路:模拟,建立一个二维数组,分别存储要分得的糖和已经有的糖。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int a[1010][2],n;
    int pd()
    {
        int i;
        for(i=0;i<n;i++)
        {
            a[i][0]+=a[i][1];
            if(a[i][0]%2) a[i][0]++;
        }
        for(i=1;i<n;i++)
        {
            if(a[i][0]!=a[i-1][0]) return 0;
        }
        return 1;
    }
    int main(void)
    {
        int i;
        while(~scanf("%d",&n))
        {
            if(n==0) break;
            memset(a,0,sizeof(a));
            for(i=0;i<n;i++) scanf("%d",&a[i][0]);
            int ans=0;
            while(1)
            {
                if(pd()) break;
                ans++;
                for(i=0;i<n;i++)
                {
                    int r=(i+1)%n;
                    a[r][1]=a[i][0]/2;
                    a[i][0]/=2;
                }
            }
            cout<<ans<<" "<<a[0][0]<<endl;
        }
        return 0;
    }
  • 相关阅读:
    随机出题问题
    简读《构建之法》提问
    大二下第一次课后作业
    大道至简第七第八章读后感
    继承与接口动手动脑
    大道至简第六章读后感
    数组里的随机数问题
    大道至简第五章读后感
    输入法的用户界面
    搜索水王
  • 原文地址:https://www.cnblogs.com/2018zxy/p/9745857.html
Copyright © 2020-2023  润新知