1951: [模拟]约瑟夫问题
文件提交:无需freopen
内存限制:128 MB
时间限制:1.000 S
评测方式:普通裁判
命题人:
提交:1
解决:1
题目描述
约瑟夫问题来源于公元1世纪的犹太历史学家Josephus,他在日记中记载了犹太战争中的一个故事:他和战友被 罗马军队包围在一个山洞中,战友们宁愿死也不愿被俘,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自 杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。Josephus是最后剩下的两个人之一,最后两人放弃了自杀。这个问题的一般形式可描述为:
n个人(分别以编号1,2,3...n表示)围成一个圆圈,从编号为1的人开始进行1~m正向报数,报到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;如此重复下去,直到所有的人全部出列,求最后一个出列人的编号。
几乎所有的程序设计入门教材都会提到约瑟夫问题,为了隐去其历史背景,便于中国人理解,国内的教材常将这个问题描述成"猴子选大王",但本质是一样的。
输入
输入文件仅有一行包含二个用空格隔开的整数N,M (2≤N≤3000,M≤N)。
输出
输出文件仅有一行包含一个整数表示一个整数,表示最后一个人在队列中的编号。
样例输入
8 3
样例输出
7