Estoy tratando de resolver los problemas preliminares de un concurso de programación y para 2 de los problemas tengo que calcular e imprimir algunos enteros muy grandes (como 100 !, 2^100).Cómo trabajar en enteros grandes que no encajan en ninguna de las estructuras de datos del lenguaje
También necesito una forma rápida de calcular las potencias de estos enteros grandes. ?
¿Me puede aconsejar algunos algoritmos o estructuras de datos de este (por cierto, leí C Interfaces y sección de 'precisión arbitraria aritmética' Implementaciones pero no resuelve el problema de pow())
EDIT: Creo la exponenciación mediante el método de cuadratura y el cambio de bit funcionará para obtener energía, pero también necesito una forma rápida de calcular los factores para esta etapa. Gracias.
EDIT2: Para aquellos que estén interesados;
Encuentra la longitud de cadena de bits más corta que incluye todas las cadenas de bits con longitud N (lo siento por mi inglés, daré un ejemplo). N < = 10000
Por ejemplo, la más corta longitud de cadena de bits que incluye todas las cadenas de bits de longitud 2 (00, 01, 10, 11) es 5 (11001).
Mi solución para este problema fue de 2^n + n - 1 (por lo que debe calcular potencias de 2, creo que voy a utilizar bits de desplazamiento)
Otro problema es que, dadas las longitudes de 2, encuentre cómo de cuántas maneras diferentes puede alcanzar la longitud N. Por ejemplo, la entrada es 10, 2, 3. Entonces debe llegar a 10 con 2 y 3 (por ejemplo, 2 + 2 + 2 + 2 + 2, 2) + 2 + 3 + 3, 3 + 2 + 2 + 3, 3 + 3 + 2 + 2 ...). 1 < = N < 2^63. Calcularemos el guión en mod 1000000007.
Mi solución fue, 2x + 3y = N, entonces x = (N - 3y)/2. Para y de 0 a 2 * N/3, si x es un número entero, entonces debería calcular la permutación generalizada para esta X e Y, total + = (x + y)./(x! * y!).
¿Cuáles son los argumentos máximo (100 o más?) Y cuánto tiempo debe tomar para calcular las respuestas? – user502144
¡El problema es diferente pero tengo que calcular 2^10000 y 100! resolver. El límite de tiempo es 1 segundo y el límite de memoria es 256mb. Puedo traducir el problema si estás interesado. Puede haber otra solución, pero está escrito en el texto del problema que la respuesta es más grande que 64 bits. – sinan
posible duplicado de [¿Largo largo sin firmar no irá más allá del número 93 de Fibonacci?] (Http://stackoverflow.com/questions/3125872/unsigned-long-long-wont-go-beyond-the-93th-fibonacci- número) –