(a*b)%c の形式のモジュラスを計算する方法は?
ほとんどオーバーフローの段階にある2つのint数値の乗算のモジュラスを計算したい...
ここで c も int です
(a * b) % c == ((a % c) * (b % c)) % c
どう((a % c) * (b % c)) % c
ですか?アーキテクチャによっては、より大きな型にキャストするよりも速くなったり遅くなったりする可能性があります。
a
andc
をにキャストできるlong long
ため、乗算がオーバーフローしません。
((long long)a * (long long)b) % c