1.基本约瑟夫问题
题目描述
\(n\)个人(\(n\le 100\))围成一圈,从第一个人开始报数,数到\(m\)的人出列,再由下一个人重新从\(1\)开始报数,数到\(m\)的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.
输入格式
\(n m\)
输出格式
出圈的编号
样例输入
10 3
样例输出
3 6 9 2 7 1 8 5 10 4
说明
\(m, n \le 100\)
2
题意描述
已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
输入
\(n,k,m\)
输出
按顺序输出出圈人的编号
样例输入
9 1 5
样例输出
5 1 7 4 3 6 9 2 8
3
约瑟夫问题是个有名的问题:\(N\)个人围成一圈,从第一个开始报数,第\(M\)个将被杀掉,最后剩下一个,其余人都将被杀掉。例如\(N=6\),\(M=5\),被杀掉的人的序号为5,4,6,2,3。最后剩下1号。
假定在圈子里前\(K\)个为好人,后\(K\)个为坏人,你的任务是确定这样的最小\(M\),使得所有的坏人在第一个好人之前被杀掉。
4
\(n\)个人排成一圈。从某个人开始,按顺时针方向依次编号。从编号为1的人开始顺时针“一二一”报数,报到2的人退出圈子。这样不断循环下去,圈子里的人将不断减少。由于人的个数是有限的,因此最终会剩下一个人。试问最后剩下的人最开始的编号。
输入
一个正整数\(n\),表示人的个数。输入数据保证数字n不超过100。
输出
一个正整数。它表示经过“一二一”报数后最后剩下的人的编号。
样例输入
9
样例输出
3
5
围绕着山顶有10个洞,狐狸要吃兔子,兔子说:“可以,但必须找到我,我就藏身于这十个洞中,你从10号洞出发,先到1号洞找,第二次隔1个洞找,第三次隔2个洞找,以后如此类推,次数不限。”但狐狸从早到晚进 进出出了1000次,仍没有找到兔子。问兔子究竟藏在哪个洞里?
6
编号为1,2,....,\(N\)的\(N\)个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数上限值\(M\),从第一个人开始按顺时针方向自1开始顺序报数,报到M时停止报数.报M的人出列,将他的密码作为新的\(M\)值,从他在顺时针方向上的下一个人开始 重新从1报数,如此下去,直至所有人全部出列为止.试设计一个程序求出出列顺序.
测试数据
\(N=7\);
7个人 的密码依次为:3,1,7,2,4,8,4,首先\(M\)值为6(正确的出列顺序应为6,1,4,7,2,3,5)
7
在环形跑道上有x辆赛车,分别编号为1,2,3,4,……,\(X\),每经历1圈,第一名会降低到第二名,第二名会降低到第三名,第三名会降低到第四名,以此类推,最后一名晋升为第一名,且就会淘汰掉排在第三名的车手。
如果每淘汰一名就输出他对应的编号,只到最后一位车手淘汰,要求输出这个编号组。
原文地址:https://www.cnblogs.com/liuziwen0224/p/12000520.html