No.381 名声値を稼ごう Extra
Note
この問題は,名声値を稼ごうの制約強化版です.
言語の特性上C++,Java,C#で正答するのは困難かもしれません。Ruby,Pythonでの回答をおすすめします。
問題文
あるゲームのクエストは何回でもクリアすることができ,クリアすることで名声値を得ることができます.
そのゲームのあるクエストは,初回にクリアすると
つまり,初回に得られる名声値が
よって,合計では,
ところが,あるスキルを持っているキャラクターを利用してクリアすると,得られる名声値の値が倍になり,その代わりに次回以降にクリアした時に得られる名声値は
例えば,
常にスキルを持ったキャラクターを利用しない場合と比べて,うまくスキルを持っているキャラクターを利用すると,いくらの名声値を余分に得ることができるか,最大値を求めるプログラムを書いてください.
入力
出力
余分に得られる名声値の最大値を
サンプル
サンプル1
入力
12
出力
2
本文中に書かれている例です.
普通にクリアし続けると得られる名声値は
サンプル2
入力
123456789123456789
出力
31
入力が32ビット整数型には収まらないことに注意してください.
入力が
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。