No.042 D

まず, フェルマーの小定理から 間に の倍数が含まれている場合は最小値は になる. 以後 の剰余を取っておく.

が小さいときは愚直にすべて試す.

が大きいときは, 入力がランダムなので答えも小さい可能性が高い. よって, 小さい から順に

となる 間に含まれているかどうかを調べる.

このような を求める方法として, Baby-step Giant-step アルゴリズムを用いる.

これは とおき, となる () を求めるやり方である.

から となる. をすべての について求めてソートしておき, がその中に含まれるかどうかを二分探索で求める.