有 � n 人围成一圈,按顺序编号。 从第 1 1 个人开始报数( 1 1 到 3 3 报数),凡报到 3 3 的人退出圈子,问最后留下的是原来的第几号。
时间: 2023-12-27 20:55:19 浏览: 127
Python使用列表完成程序的编写:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到m报数),凡是报到m的人退出圈子,问最后留下的是原来第几号的人。
5星 · 资源好评率100%
根据约瑟夫问题的经典解法,最后留下的人的编号为:
$$
f(n,m) = \begin{cases}
0 & n = 1 \\
[f(n-1,m)+m] \bmod n & n > 1
\end{cases}
$$
其中,$n$ 表示初始时围成圈的人数,$m$ 表示报数到第几个人就出圈。将 $n=1000$,$m=3$ 代入上式,得到最终留下的人的编号为 661。
阅读全文