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