※ 引述《neiltsang (楚留香雞排)》之銘言:
: 那麼也不算難啊 其實過程的概念寫下來就好了 只能說冗長吧
: 或就利用歸納法囉 另一個答案:
: 寫成二進位然後把第一位移到最後面 這解我就真的不會
這個問題要直接出手解決那當然是比較難
假設n個人的時候,f(n)會活下來
但可以先從簡單的例子看起,比如 n 偶數的時候,
考慮 n = 10:
1,2,3,4,5,6,7,8,9,10
奇數會先把偶數殺光變成
1,3,5,7,9 然後又從1開始,
所以從這邊可以看得出 f(n) = 2f(n/2)-1 if n is even
那n是奇數呢?
考慮 n = 9
1,2,3,4,5,6,7,8,9
一樣奇數會把偶數殺光,變成
1,3,5,7,9
但注意的是最後那個奇數還沒有動作,所以下一輪會變成9開始幹活,
等於是在問 9,1,3,5,7 這列如果開殺誰會活下來
所以可以得到 f(n) = 2[ f( (n+1)/2)-2 mod (n+1)/2 ] +1 if n is odd
整理起來我們就有
f(1) = 1;
for n>=2 we have
f(n) = 2f(n/2)-1 if n is even
2[ f( (n+1)/2)-2 mod (n+1)/2 ] +1 if n is odd
從而我們就可以進而用數學歸納法證明:
給定任何 2^n + k where n>=0 and 0<= k <= 2^n-1
我們都有 f(2^n+k) = 2k+1