Estouro: a * um mod n

Eu preciso calculara*a modn masa é bastante grande, resultando em estouro quando eu a quadreto. Fazendo((a%n)*(a%n))%n não funciona porque (n-1)2 pode transbordar. Isso está em C ++ e estou usando int 64's.

edit: exemplo um valor = 821037907258 e n = 800000000000, que estourará se você o quadrar.

Eu estou usando DevCPP e eu já tentei obter bibliotecas de inteiros grandes trabalhando sem sucesso.

edição 2: Não, não há padrão para esses números.

questionAnswers(5)

yourAnswerToTheQuestion