El Personaje Principal#12217

El Personaje Principal (Editorial)

Autor del Problema:

De3b0o

Preparado por:

De3b0o

Editado por:

Hasan Saleh (MathModel)

Solución

Hecho 1 : Siempre es óptimo usar dado la condición de suma máxima.

Veamos los casos con cuidado. Consideremos el caso donde es impar, podemos usar porque es impar y es imposible que un impar termine en , ya que un número que termina en debe ser divisible por y , por lo tanto, para impar usamos .

Veamos el caso donde \gcd(n,10)=2, en este caso el dígito final es uno de 2,4,6,8 pero no , por lo que podemos usar como respuesta.

Para el caso donde \gcd(n,10)=5, en este caso el dígito final es , por lo que podemos usar .

Ahora para el último caso \gcd(n,10)=10, en este caso es óptimo separar las potencias de y las potencias de para que no tengamos un final en ninguno de y , esto se puede hacer calculando la máxima potencia de que divide y la máxima potencia de que divide en \mathcal{O}(\log_5(n)), \mathcal{O}(\log_2(n)) respectivamente.

Sea p_2,p_5 la máxima potencia de y respectivamente que divide , entonces es óptimo usar \min(2^{p_2},5^{p_5}) como el primer número y \frac{n}{\max(2^{p_2},5^{p_5})} como el segundo número.

Complejidad \mathcal{O}(t \cdot \log(n)).

from math import *

def solve():
    n=int(input())
    if(gcd(n,10)!=10):
        print(1,n)
    else:
        p2,p5=1,1
        while(n%2==0):
            p2*=2
            n//=2
        while(n%5==0):
            p5*=5
            n//=5
        if(p2>p5):
            print(p5,n*p2)
        else:
            print(p2,n*p5)
    

for _ in range(int(input())):
    solve()