AtCoder Beginner Contest 297 D問題 Count Subtractions
問題
提出解答
問題の概要
整数 に対して, 以下の操作を になるまで行う.
- ならば,
- ならば,
になるまで何回の操作を要するか (有限回であることが証明できる)?
制約
解法
最初に である状態からの操作回数を と置くことにする. ここで, より, であるとしても一般性を失わない.
ここで, を に置き換えるという操作を何回連続して行うかを考える. これは
を満たす整数 を求めることになる.
これを満たす整数 は
である.
このとき, から 回 を引くと,
であるから,
となる.
ここで, 余りの場合について, が成り立つ. 実際,
- ならば, 余りの定義から である.
- ならば, を で割った商は 確定なので, となる.
よって,
であり, この計算を 回行うと, の第 引数が半分以下になる.
よって, 計算量は 時間である.