#2019120700020 约瑟夫问题七问

为君一笑 提交于 2020-01-27 06:01:18

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圈,第一名会降低到第二名,第二名会降低到第三名,第三名会降低到第四名,以此类推,最后一名晋升为第一名,且就会淘汰掉排在第三名的车手。
如果每淘汰一名就输出他对应的编号,只到最后一位车手淘汰,要求输出这个编号组。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!