解法
求める回数をxとして条件を数式で表すと
S + Kx \equiv 0 \pmod{N} \tag{1}
式変形すると
Kは\mod{N}において逆元をもち
x \equiv -\frac{S}{K} \pmod{N}
(1)式はS + KxがNの倍数だという意味なので
gcd(K, N) = gとおくと
K = gK', N = gN': K', N'は互いに素とおけて
S + gK'x = mgN' \\
S = mgN' - gK'x
よってSはgの倍数である必要がある、Sがgの倍数でないとき解なし
Sがgの倍数であるとき、S = gS'とおけて、
つまり
S' + K'x \equiv 0 \pmod{N'}
となって、結局(a)のケースに帰着する
最終的な解法としては
-
g = gcd(N, K)を求める
-
Sがgで割り切れない場合解なし
-
S, K, Nをgで割る
-
-\frac{S}{K} \pmod{N}を求める
となる
この問題の場合、Nが素数とは限らないので、
逆元計算でフェルマーの小定理ではなく拡張ユークリッドの互除法を使う必要がある
提出コード
https://atcoder.jp/contests/abc186/submissions/20096332
Discussion