Encontré varios problemas con su código:
- Está utilizando long int para almacenar el promedio multiplicado con una potencia apropiada de 10. long int tiene el mismo rango que int y se desbordará (el número puede ser hasta 10 ^ 10). Debes usar long long int.
- Está convirtiendo la representación de cadena del número en flotante. El flotador tiene una precisión menor que el doble, pero incluso la conversión a doble dará una respuesta incorrecta aquí porque no podemos estar seguros de cómo se representará (0.0001 podría representarse como 0.000099999). En su lugar, debe eliminar el punto (.) De la representación de la cadena, mover los lugares decimales hacia adelante y luego convertirlos a largos largos.
- Aunque, esto no se refiere a la corrección de su programa, pero no necesita asignar tanta memoria a las cadenas s. El valor máximo de avg es 10 ^ 6 no 10 ^ 1000000. Algo así como 15 caracteres es más que suficiente.
Aquí está mi solución de Python aceptada:
def gcd (a, b): devuelve a if b == 0 más gcd (b, a% b)
- ¿Por qué la complejidad espacial de quicksort es "log n"?
- ¿Se usa R ampliamente hoy en día en la ciencia de datos?
- ¿Cuál es el enunciado del problema resuelto por el algoritmo Bellman-Ford?
- ¿Cómo agrupa Google News las historias?
- ¿Cómo se puede desarrollar la lógica en la programación?
T = int (raw_input ())
para _ en xrange (T):
avg = raw_input ()
pos = avg.find (‘.’)
si pos == -1:
imprimir 1
continuar
pow10 = 10 ** (len (promedio) -pos-1)
puntaje = int (promedio [: pos] + promedio [pos + 1:])
imprimir pow10 / gcd (pow10, puntaje)