约瑟夫环
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\)
本文来自博客园,作者:ShaoJia,版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。