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()