La declaración del problema dice que hay 500 casos de prueba, cada uno con un número entero entre 1 y 1e16 inclusive
1e16 es un gran número. Si no tienes idea de qué tan grande es, déjame mostrarte:
10,000,000,000,000,000
- ¿Qué tan difícil fue crear e implementar el algoritmo de clasificación de página inicial de los primeros Google?
- ¿Cuáles son algunos algoritmos para el comercio de acciones automatizado?
- Cómo aprender estructuras de datos usando C ++ de manera simple
- ¿Cuál es el número máximo de nodos que se pueden encontrar en un árbol binario en los niveles 3, 4 y 12?
- ¿Cuáles son algunos lenguajes de programación que me permiten visualizar algoritmos?
Las CPU tienen una velocidad de reloj del orden de unos pocos GigaHertz. Es decir, la CPU moderna puede ejecutar alrededor de mil millones de ciclos de CPU por segundo. Suponiendo que en el mejor de los casos, 1 instrucción consume 1 ciclo de CPU, podemos decir que la CPU puede ejecutar del orden de mil millones de instrucciones por segundo.
Su código está haciendo operaciones de división 1e16. Asumiendo que una operación de división toma ~ 10 ciclos de CPU, su código consumirá 1e17 ciclos de CPU, que son aproximadamente 1e8 segundos. Esto es más de 3 años de tiempo. ¿Ves a dónde me dirijo?
Eso sí, eso es solo 1 caso de prueba. Tienes 500 de ellos.
Hablando algorítmicamente, su algoritmo es exponencial en complejidad (exponencial en el número de bits en la entrada). Necesita encontrar un mejor algoritmo para este problema.