Multiplicación modular de grandes números en c ++.

Tengo tres enterosA, B (menos de 10 ^ 12) yC (menos de 10 ^ 15). Quiero calcular(A B C. Yo sé eso

(A * B) % C = ((A % C) * (B % C)) % C

pero di siA = B = 10 ^ 11 entonces la expresión anterior causará un desbordamiento de entero. ¿Hay alguna solución simple para el caso anterior o tengo que usar algoritmos de multiplicación rápida?

Si tengo que usar un algoritmo de multiplicación rápida, entonces qué algoritmo debería usar.

EDITAR: He intentado por encima del problema enC ++ (lo que no causa desbordamiento, no estoy seguro de por qué), pero no es la respuesta correctacero?

Gracias por adelantado.