7-28 猴子选大王 (20分)

 

复制代码
#include<iostream>
using namespace std; 
int a[1001];
/*
模拟法:刚开始圈内所有数的a[i]=-1,表示还未报数 
当淘汰了n-1个猴子的时候,表示游戏结束选出了猴王。
一轮一轮去淘汰,每一轮标记上一论报的数字不为3的倍数,这一轮报的数字为3得倍数的猴子---淘汰数+1 
*/
int main()
{
    int N;
    cin>>N;
    for(int i=0;i<=N;i++){
        a[i]=-1;
    }
    int cnt=1,t=0;//t表示当前报到过3的倍数的人数,cnt表示当前有效报了cnt次 
    while(t<N-1){//还在报数,未选出猴王 
        for(int i=1;i<=N;i++){//循环报数 
            if(a[i]!=0){//表示上一轮报的数字不为3的倍数 
                a[i]=cnt%3;//a[i]表示这一轮报的数字 
                if(a[i]==0) t++; 
                cnt++;//有效报数次数加一 
            }
        }
    }
    for(int i=1;i<=N;i++){
        if(a[i]!=0){
            cout<<i<<endl;
        }
    }
    return 0; 
}
复制代码

 

posted @   saaas  阅读(312)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2019-03-11 qsor快排序以及cmp函数
2019-03-11 枚举排列算法
点击右上角即可分享
微信分享提示