m只猴子围坐成一个圈,按顺时针方向从1到n编号。然后从1号猴子开始沿顺时针方向从1开始报数,报到n的猴子出局,再从刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,它就是大王。设计并编写程序,实现如下功能:
(1) 要求由用户输入开始时的猴子数n、报数的最后一个数m。
(2) 给出当选猴王的初始编号。
function find($m, $n) {
$arr = range(1, $m);
$i = 1;
while (count($arr) > 1) {
if ($i % $n == 0) {
// 提出猴子
unset($arr[$i-1]);
} else {
array_push($arr, $arr[$i-1]);//不是m的挪到数组末尾,循环
unset($arr[$i-1]);
}
$i++;
}
return array_pop($arr);
}