AtCoder Beginner Contest 161 F - Division or Substraction
解法
「 が
で割り切れる時」「割り切れない時」で操作の種類が変わるので、
を
で割った余りに注目してみましょう。
もし を
で割った余りが
でない場合には、
は
未満になるまで
に置き換えられ続けます。つまり、この余りはずっと変わりません。よって
を割り切れないような
のうち条件を満たすものは、その余りが
であるもの全てです。
このような の個数を求めましょう。余りが
であるということは正整数
を用いて
と表現できるということです(
なので
はあり得ません)。これを変形して
となり、このような正整数
が存在する
は
の約数なので、その個数を数えれば良いです。ただし
は除きます。
一方 が
で割り切れる時には、割り切れなくなるまで
で割られ、その後は上記と同じ流れになります。よって
の約数(
を除く)であるような
を全て試し、
を割り切れなくなるまで割ってから、さらに割ろうとした時の余りが
であるかを調べれば良いです。約数は多く見積もっても
個以下(実際はもっと少ないです)なので、全て調べても間に合います。
両方の の個数を合計することで答えを求めることができます。