Como se indica en la pregunta, estoy tratando de escribir un solucionador genérico para $2^{(x+1)^2}$ módulo $m$ donde $m$ no es primo. Normalmente puedes simplemente hacer la exponenciación al cuadrado con módulo para obtener la respuesta, pero el problema que tengo es que $(x+1)^2$ es demasiado grande para almacenarse en un tipo de datos estándar como unsigned long long en C++. Hacer $2^{(x+1)^2~mod~m}~mod ~m$ también es incorrecto.
¿Hay alguna manera de evitar este problema?