16時間です><
def f(n,i)
o=(n+1) div 2 '1回で捨てられる最大枚数(=奇数の枚数)
if i<=o then '1回で捨てきれれば終わり
return i*2-1 '1枚目は1, 2枚目は3, ...
else
'ここで、捨てられる奇数odd枚を全部捨てたとすると
'残りの山は全部偶数だから、数字を1/2して再帰し結果を2倍する
e=n-o '残った偶数の枚数
if !(n mod 2) then
return f(e,i-o)*2 'nが偶数のときは、次も山の先頭から捨てればOK
else
return (f(e+1,i-o+1)-1)*2 'nが奇数のときは、次の山の先頭を飛ばすため、nとiを1増やして先頭に0のカードを挟んだことにしておき、結果から1枚分引く
endif
endif
end
1そうだね プレイ済み