填一个一年前的坑
有只猴子选大王,编号顺时针从到,从号猴子开始顺时针从报数,报到的猴子退到圈外,接着从报数,最后剩下的猴子成为大王。
考虑递推,假设已经知道了只猴子时编号为的猴子会成为大王。
而且我们知道只猴子时第一个出圈的是号猴子,那么可以把剩下的猴子重编号成为子问题。可以推出会成为大王。
于是有一个递推的做法。
特别地,当,猴子编号从到时我们有更优秀的做法。首先,若则易得号猴子就是大王。设,则考虑先个猴子出圈之后下一只猴子就是大王。于是易得号猴子成为大王。
值得一提的是,设为只猴子时的答案,则即为在二进制下循环左移一位,这个通过刚才推得的结论易得。