<?php /** * $m 猴子总数 * $n 出局数 */ function king($m,$n){ $arr = range(1, $m); $i = 0; while (count($arr)>1) { if(($i+1)%$n == 0){ unset($arr[$i]); }else{ array_push($arr, $arr[$i]); unset($arr[$i]); } $i++; } return reset($arr); } function king2($m,$n){ $arr = range(1, $m); $unsetNum = 0; for($i=2;$i<= $m*$n;$i++){ foreach ($arr as $key => $value) { $unsetNum++; if($unsetNum == $n){ unset($arr[$key]); $unsetNum = 0; } if(count($arr) == 1){ return reset($arr); } } } } function ysf($m,$n){ $num=0; for($i=2; $i<=$m; $i++){ $num=($num+$n)%$i; } return $num+1; } $res = king(5,3); var_dump($res); $res2 = king2(5,3); var_dump($res2); $res3 = ysf(5,3); var_dump($res3);