Как рассчитать модуль формы (a * b)% c?
Я хочу вычислить модуль умножения двух чисел типа int, где они почти находятся в стадии переполнения ...
здесь c также int
(a * b) % c == ((a % c) * (b % c)) % c
А как насчет ((a % c) * (b % c)) % c? В зависимости от вашей архитектуры это может быть быстрее или медленнее, чем приведение к большему типу.
((a % c) * (b % c)) % c
Вы можете разыграть a и c до long long, поэтому умножение не будет переполнено.
a
c
long long
((long long)a * (long long)b) % c