Вычислить a*a по модулю n без переполнения.

Мне нужно вычислить a*amod n, но aдовольно велико, что приводит к переполнению, когда я возводил его в квадрат. Выполнение ((a % n)*(a % n)) % nне работает, потому что (n-1)2 может переполниться. Это на С++, и я используюint64_t

Изменить:

Пример значения :a = 821037907258 и n = 800000000000, которое переполняется, если вы возводите его в квадрат.

Я использую DevCPP, и я уже пытался получить большие-целочисленные библиотеки, работающие безрезультатно.

Редактировать 2:

Нет, для этих чисел нет шаблона.

8
задан phuclv 25 May 2019 в 00:56
поделиться