约瑟夫问题——历史的真相

题目描述

你一定听说过约瑟夫问题,或者它的“变种”——猴子选大王等故事吧。但是,你知道约瑟夫问题的历史真相吗?约瑟夫是公元一世纪著名的历史学家。在罗马人占领乔塔帕特后,39 个犹太人与约瑟夫及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人俘虏,于是决定了一个流传千古的自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报到第3人该人就必须自杀,然后再由下一个人重新报数,直到所有人都自杀身亡为止。然而约瑟夫和他的朋友并不想遵从这个约定,约瑟夫要他的朋友先假装遵从,他将朋友与自己安排在第16个和第31个位置,于是逃过了这场死亡游戏。
现在我们把问题一般化,假设有n(n≥3且n≤100)个人,按1,2,...n编号围坐一圈,从一号开始按1,2...,m报数,凡报m号的退出到圈外,如此循环报数直到圈内剩下2个人。请问,这两个人的编号是多少?为了更好地感同身受,你可以假设你和你的朋友(最好是你心仪已久的人,这样效果会更好)就在这n个人里面,面临当年约瑟夫同样的问题,所以你应该效法于约瑟夫,赶紧想办法和你的朋友逃出生天。

输入

第一行为一个整数t,表示有多组测试数据。接下来有t行,每行2个整数n和m,空格隔开。

输出

对于每组测试数据,输出最后剩下的两个人的编号,按从小到大输出,以空格隔开,占一行。

样例输入

2
3 2
5 4

样例输出

1 3
1 2 
#include <iostream>
using namespace std;
int main()
{
    int n,m,a[110],i,j,k,t;
    cin >> t;
    while(t--)
    {
        cin >> n >> m;
        for(i=0;i<n;i++)
        {
            a[i]=1;
        }
        i=0;
        k=0;
        j=0;
        while(n-j>2)
        {
            if(a[i]!=0)
            {
                k++;
            }
            if(k==m)
            {
                a[i]=0;
                j++;
                k=0;
            }
            if(i==n-1)
            {
                i=0;
            }
            else
            {
                i++;
            }
        }
        for(i=0;i<n;i++)
        {
            if(a[i]==1)
            {
                cout << i+1 << " " ;
            }
        }
        cout << endl;
    }
    return 0;
}

时间: 2024-08-09 06:34:36

约瑟夫问题——历史的真相的相关文章

历史的污点:列宁回国

在第一次世界大战期间,俄国,英国,法国组成合约国,共同应对来自以德国为首的同盟国的进攻,当德国意识到无法同时与三个国家战斗时,列宁给了他们希望:德国同意送给列宁1000万美金,同时将他从被流放的瑞士送回俄国,条件就是支持列宁革命,但革命胜利后俄国必须退出一战,不得不说德国当时领导者的睿智:而列宁答应了这个条件,返回俄国,在斯大林的帮助下进行了十月革命,推翻了沙皇统治,同时签订了退出一战且与德国的同盟友好条约,我不能矫情的说有种毁三观的节奏,但确实给我以很大的冲击:列宁为了自己心中神圣的革命,为了

吴法宪回忆录中的高层政治斗争真相(转)

作者按:吴法宪将军去世已有两年多(2006年——编者注),今天我们终于看到这部期盼已久的<岁月艰难――吴法宪回忆录>(上下册).很早就听说吴将军身后留下了一部回忆录的书稿,记述了他自己人生几十年的经历,特别是文化大革命这段历史时期的风风雨雨的历程.笔者之所以特别关注此书的问世,盖因这是被中共打倒的所谓“林彪反革命集团”中主要人物首次公开发表的回忆录.以往的三十多年里,相关的信息和资料被封锁之严,实为前所未有,即便有一些披露,也多为政治说毛**教,少有可称得上历史科学认可的材料.我们听惯了也看惯

活着?

"人类最大的优点是什么?" "无知和傲慢" "什么原因造成了的?" "知道的太多,忘记了思无涯,被知道了太多,忘记学会思考" "似乎本质上是一样,都是主动停止了思考" "是的,一个是自以为是找到了终极真理,一个自以为是信仰了终极真理" "为何有些人对人类的未来悲观主义" "因为那些人看到了历史上和未来的人类所有的错与恶" "他们深刻的知道

【转载】近代中国落后的根本原因

http://blog.sina.com.cn/s/blog_457cf5de0102vo5z.html 近代中国落后的根本原因 来源: 360doc个人图书馆 近代中国落后的根本原因,是我们失去了儒道精神,而不是宣扬儒道造成的.这种失去,是满清造成的.为了维护统治,满清费尽心思地破坏中华固有的文化.思想和科技.并且将愚昧和麻木植入我们的民族.手段高明得难以想象.以至于,几百年后的今天,我们仍固执的认为落后来自于文化,而不是满清.孔子也成了满清的替罪羊.悲哉.我们需要恢复中华文化的本来面貌.找回

读《如何阅读一本书》乱摘

2016.05.17 – 05.28 <如何阅读一本书> - 莫提默?J.艾德勒 & 查尔斯?范多伦 著 - 郝明义 朱衣 译 如何第一次读本书? 我们每个人都有这样的体经验:对一本难读的书抱有高度期望,以为它能启发我们,结果却只是在徒劳无益的挣扎而已. 05.17 Part1 阅读的层次 1 阅读的活力与艺术 本书读者对象.这本书是为那些把读书的主要目的当作是增进理解能力的人而写. 主动阅读.阅读是一种活动,那就必须要有一些主动的活力.完全被动,就阅读不了 -- 我们不可能在双眼停滞

传承和积累

今天看了中国功夫历第二季:徐皓峰 中国武术的主流在战场的节目,里面就是讲了一些功夫的历史和真相,由此我想到了现在it公司的技术积累和传承. 一个公司,有人分析业务,有人写代码,有人搞运营,当公司亏损或者倒闭,那之后呢,他留下了什么,留下充满大量业务逻辑的代码?还是一大推别人看不懂的文档?桌子椅子? 失败时的垂头丧气? 我很喜欢一句话“技术短期期内被高估,长期内被低估”.很多创业公司就是有一个点子,开始弄点风投,找几个码农开始写代码,最后失败了,各回各家各找各妈,他们是不是真的总结了经验教训,失败

苹果与谷歌微软那些不为人知的故事

摘要:现在智能手机领域为什么两大霸主一直针锋相对?在<史蒂夫·乔布斯传>中有为什么会有这样一句关于Android的狠话:"如有必要,我会用尽最后一口气,花光苹果400亿美金的积蓄,摧毁Android,因为那是偷来的产品"? 苹果系统的视窗操作界面要先于微软公司的windows发行,微软正是看到苹果的视窗操作系统之后,才立刻紧急召集人手开发的.当乔布斯得知这个消息之后,大为恼火,因为当时他和比尔盖茨的关系还相当不错,在很多业务上有往来.--科普:最先研发视窗操作系统的是一个叫

前端好难

In many ways, I think being a front end engineer is one of the most complicated jobs in computer science. Most traditional programming concepts don’t apply and there’s a lot of soft science being applied to numerous technologies for usage on numerous

[转]深邃之思想,纯粹之灵魂——我所了解的柳智宇学长

https://zhuanlan.zhihu.com/p/32340797 柳智宇学长文集 前言部分 深邃之思想,纯粹之灵魂--我所了解的柳智宇学长 --2017年12月25日 中国.湖北.武汉.华中科技大学[陆秋宇] 正文部分 读到自己高二写的这篇文章 --2005年 中国.湖北.武汉.华中师大一附中 远慰风雨夕 --2006年7月 斯洛文尼亚.卢布尔雅那.第47届IMO前夜 我在大学的成长历程 --2009年 中国.北京.北京大学 柳智宇学长在北大耕读社 --2006年~2009 中国.北京