| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1152 人关注过本帖
标题:猴子选猴王问题,请高手指教下
只看楼主 加入收藏
大神仙下凡
Rank: 2
等 级:论坛游民
帖 子:12
专家分:10
注 册:2017-9-21
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:1 
猴子选猴王问题,请高手指教下
N只猴子选猴王,方法如下:从头到尾1、2、3报数凡是报3的退出,余下的从尾到头报数,凡是报3的退出。余下的又从头到尾报数,还是报3的退出;以此类推,当剩下两只猴子时,取这时报数报1的为王。要想当猴王,最初应占据什么位置?
搜索更多相关主题的帖子: 猴子 方法 报数 退出 位置 
2017-09-28 10:52
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:10 
此论坛是禁止作业题的
若你在做题时有什么知识点不会,可以提出来,然后大家解答

以上是站长的规定,我是无所谓的,但你出题,起码要题目完整,即“示例输入、示例输出”是不可少的,让别人可以验证代码是否正确
比如 n == 5 时,输出 2
比如 n == 9 时,输出 7

程序代码:
size_t foo( size_t n, size_t m ) // n为开始时的总数,m为退出者报数。对于本题,m恒为3
{
    size_t r = 0;
    for( size_t i=3; i<=n; ++i ) // 题目要求“当剩下两只猴子时,取这时报数报1的为王”,所以i从3开始
        r = (r+m)%i;
    return r; // 返回序号 base 0。因为在算法中序号从1开始的,都是该杀的傻屄
}

#include <iostream>
using namespace std;

int main( void )
{
    cout << "2只猴子时,当占据第 " << foo(2,3)+1 << "位.\n";
    cout << "3只猴子时,当占据第 " << foo(3,3)+1 << "位.\n";
    cout << "4只猴子时,当占据第 " << foo(4,3)+1 << "位.\n";
    cout << "5只猴子时,当占据第 " << foo(5,3)+1 << "位.\n";
    cout << "6只猴子时,当占据第 " << foo(6,3)+1 << "位.\n";
    cout << "7只猴子时,当占据第 " << foo(7,3)+1 << "位.\n";
    cout << "8只猴子时,当占据第 " << foo(8,3)+1 << "位.\n";
    cout << "9只猴子时,当占据第 " << foo(9,3)+1 << "位.\n";
}

2017-09-28 12:53
快速回复:猴子选猴王问题,请高手指教下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015754 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved