標籤:code 最小 情況 span log for bsp 迴圈 一個
/* 10:五隻猴子採得一堆桃子,猴子彼此約定隔天早起後再分食。 不過,就在半夜裡,一隻猴子偷偷起來,把桃子均分成五堆後, 發現還多一個,它吃掉這桃子,並拿走了其中一堆。第二隻猴子醒來, 又把桃子均分成五堆後,還是多了一個,它也吃掉這個桃子,並拿走了其中一堆。 第三隻,第四隻,第五隻猴子都依次如此分食桃子。那麼桃子數最少應該有幾個呢? 設總數為x 第0個猴子偷掉後剩下的總數 (x-1)4/5=H1 第1個猴子偷掉後剩下的總數 (H1-1)4/5=H2 第2個猴子偷掉後剩下的總數 (H2-1)4/5=H3 第3個猴子偷掉後剩下的總數 (H3-1)4/5=H4 第4個猴子偷掉後剩下的總數 (H4-1)4/5=H5 第5個猴子偷掉後剩下的總數 最後一個猴子最少把桃子分為 5堆每堆一個,還剩一個 */ /** * $n 是猴子數量 * $total 桃子數量 * $min 桃子最小數量 */$n=10;// 如果空值的情況,可能桃子最小數量已經超過桃子總數量$total = 9999999;$min = setFor($n,$total);echo $min; // 迴圈桃子function setFor($n,$total){ // 假設最少就6個桃子 for ($i=6; $i < $total ; $i++) { if ( $minTaozi = getTaozi($n,$i)) { break; } } return $minTaozi;}// 擷取桃子最小值function getTaozi($n,$i){ if($n==0) { return $i; } $taozi = getTaozi($n-1,$i); if($taozi==false) { return false; } if($taozi%4 != 0 ) { return false; } return $taozi*5/4+1; }
[php] 猴子偷桃