• 【科创网0184】选小寿星


    选小寿星
    难度级别:A; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
    试题描述
    一班有一个传统,全班一起庆祝当月过生日的同学。有m名学生都是11月份过生日,班主任决定挑一名学生作为寿星代表切蛋糕。班主任将过生日的m名学生随机围成一个圈,从1到m进行编号。随机挑一个数字n(1<=n<=9),从第一个同学开始连续报数,报数到n的同学就出局,然后从下一位同学重新开始报数,一直到剩下最后一名同学。由于女生少,班主任决定每个女生有2次机会,也就是说,每名女生第2次数到n时才出局。  例如,m=3,其中有1名女生,编号顺序为1,2,3,分别是男,女,男,n=2。第一轮报数,报到的是2号女生,暂不出局(注:女生有2次机会)。第二轮报数, 3号男生报1,1号男生报2出局。第三轮报数,2号女生报1,3号男生报2出局,最后留下2号女生。  有m=5,其中2名女生,编号顺序为1,2,3,4,5,分别为男,男,女,女,男。n=3。挑选后的结果是5号,男生。(注:女生有2次机会)
    输入
    第一行输入数字为m,表示有m个人;m<20          
    第二行是m个整数,1代表男生,0代表女生。          
    第三行是n,表示n是出局数字。(注意:女生有2次机会)
    输出
    输出留下学生的序号
    输入示例
    5     
    1 1 0 0 1   
    3
    输出示例
    5
     
    #include<iostream>
    
    using namespace std;
    
    int main()
    {
        int n,i,chuju=0,jishu=0,m;
        cin>>n;
        int a[n],b[n];
        
        for(i=0;i<n;i++)
            b[i]=1;
        for(i=0;i<n;i++)
            cin>>a[i];
            
        cin>>m;
        while(chuju+1<n)
            for(i=0;i<n;i++)
            {
                if(b[i]==1)
                    jishu++;
                if(jishu==m)
                {
                    if(a[i]==1)
                    {
                        b[i]=0;
                        chuju++;
                        jishu=0;
                    }
                    else if(a[i]==0)
                    {
                        a[i]=1;
                        jishu=0;
                    }
                }
            }
        for(i=0;i<n;i++)
            if(b[i]==1)
                cout<<i+1;
        return 0;
    }


    原题链接

  • 相关阅读:
    Linxu下段错误(segmentation fault)的调试
    n900破解无线路由密钥(wep)
    windows 7 下安装运行VC6
    【转载】W32Dasm反汇编工具使用详解
    用PreCode Snippet代码高亮
    转——别告诉我能懂PPT
    程序员必须掌握的基本正则表达式
    简单之美—软件开发实践者的思考—故事场景1
    xml解析
    Android Frameworktouch事件派发过程深入理解
  • 原文地址:https://www.cnblogs.com/6666junyiliu/p/5997896.html
Copyright © 2020-2023  润新知