约瑟夫环

n个人围成一圈,选择一个正整数k,从第一个人开始从1报数,报到k的人被沙雕,在剩余的人中,从被拉出去那人下一个人开始,继续从1开始报数,报到k的人再被沙雕。如此循环,直至剩下最后一人。所以,对于每给定一组n和k,可以算得一个编号序列,序列中编号的位置表示这个人被沙雕的顺序。

那么怎么求最后活着的人

\(n,m\in N^* ,n>1\)

\(F_{1,m}=0\)

\(F_{n,m}=(F_{n-1,m}+m)\)%\(n\)

注:\(F_{n,m}\)(即每个人的编号)\(=0,1,2\ldots(n-2),(n-1)\)

\(F_{n,m}\)表示 \(n\) 个人报数,每报到 \(m\) 时杀掉那个人,最终活人的编号

\(F_{n-1,m}\)表示 \(n-1\) 个人报数,每报到 \(m\) 时杀掉那个人,最终活人的编号

特别地

\(m=2\)

\(2^k\leqslant n<2^{k+1}\)

\(F_{n,2}=2(n-2^k)+1\)

posted @ 2021-03-14 11:19  ShaoJia  阅读(29)  评论(0编辑  收藏  举报