Переполнение: a * a mod n

Мне нужно рассчитатьa*a модификацияn ноa довольно большой, что приводит к переполнению, когда я его возводю в квадрат. дела((a%n)*(a%n))%n не работает, потому что (n-1)2 может переполниться. Это на C ++, и я использую int 64.

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

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

редактировать 2: Нет, у этих номеров нет шаблона.

Ответы на вопрос(5)

Ваш ответ на вопрос