php編程設計

一羣猴子排成一圈,按1,2,…,n依次編號。而後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去…,如此不停的進行下去,直到最後只剩下一隻猴子爲止,那隻猴子就叫作大王。要求編程模擬此過程,輸入m、n, 輸出最後那個大王的編號。用程序模擬該過程。編程

 

1.
function King($n, $m) {
$s = 0;
for($i = 2; $i <= $n; $i++) {
$s = ($s + $m) % $i;
}
return $s+1;
}

echo King(100, 3);


2.

function fn($n ,$m)
{
$arr = range(1,$n);
$i = 0 ; //設置當前數的次數
while(count($arr)>1)
{
//遍歷數組,判斷當前猴子是否爲出局序號,若是是則出局,不然放到數組最後
if(($i+1) % $m == 0) {
unset($arr[$i]);
} else {
//array_push() 函數向第一個參數的數組尾部添加一個或多個元素(入棧),而後返回新數組的長度。
array_push($arr ,$arr[$i]); //本輪非出局猴子放數組尾部
unset($arr[$i]); //刪除
}
$i++;
}
return $arr;
}
print_r(fn(9,3));
相關文章
相關標籤/搜索