知识点 · 要点
- n 个人围成一圈,从 1 号开始报数,每报到 k 的人出圈,然后下一个人重新从 1 报。
- 问:最后留下的是几号?这就是"约瑟夫环"问题。
- 不用一圈圈数也能算:J(1)=0;J(n) = (J(n−1) + k) mod n —— 一个只有一行的递推式。
拓展延伸
- n 很大时(比如 1000 人),一圈圈模拟要数很久,递推式一步到位。
- 把递推式倒过来看:每多一个人,胜利者的位置就"往后挪 k 个"。
- k = 2 时有个漂亮结论:最后留下的就是"不超过 n 的最大 2 的幂"之外的那部分(试试 k=2)。
授权:本页内容采用 CC BY-NC-SA 4.0 授权:
可下载、打印、改编、免费分发,需保留来源注明「萌芽学坊 seedacad.cn」,不可商业转售。