猴子选大王

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);
}

点赞