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