Deseo codificar para calcular el valor de pow (a, b)% MOD. Yo uso C++ para codificar.Cálculo (a^b)% MOD
Pero el problema es que el valor de b puede ser muy grande. Conozco el método log (b) time complexity. Pero, el valor de b podría no ajustarse en el tipo de datos "long long" de C++. Por ejemplo, b puede ser 1000000000 del número de Fibonacci. El cálculo exacto de un número tan grande es en sí mismo, no es posible (en límites de tiempo).
P.S. :
- pow (a, b) significa a * a * a * a * ... b veces.
- X% MOD significa el resto obtenido al dividir X por MOD.
posible duplicado de [Manejar enteros de longitud arbitraria en C++] (http://stackoverflow.com/questions/8146938/handle-arbitrary-length-integers-in-c) –
solo para aclarar, en C++ '^' es el operato XOR r, no es un operador exponente (terminarías con algunos resultados bastante bonitos, experiencia de primera mano allí). Creo que tienes que usar 'Math.exp (a, b)' – nbrooks
@nbrooks: Si bien es cierto que C++ usa '^' para significar XOR, 'Math.exp (a, b)' no se ve como C++ (y basado en el nombre, esperaría que calcule el exponencial, no eleve un número a una potencia). –