一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。用程序模拟该过程。
//$a 有多少个猴子编号
//$b 要第几步要踢出的猴子
function getNumber($a,$b){
$i = 0;//默认 第0个大王
//循环数组,判断猴子次数
while(count($a)>1){
if( ($i+1)%$b == 0 ){
//要踢出猴子
unset($a[$i]);
}else{
array_push($a,$a[$i]);//把第b只猴子放在最后面
unset($a[$i]);//删除
}
$i++;
}
echo $a[$i];
}
$a = [1,2,3,4,5,6,7,8,9,10];
getNumber($a,3);