Problem Müəllifi: | De3b0o |
Hazırlayan: | De3b0o |
Redaktə edən: | Hasan Saleh (MathModel) |
Həll
Fakt 1 : Həmişə istifadə etmək optimaldır, maksimum cəmi təmin etmək şərti ilə.
Hallara diqqətlə baxaq, tək olduğu halda istifadə edə bilərik, çünki təkdir və tək ədədin ilə bitməsi mümkün deyil, çünki bir ədəd ilə bitirsə, və -ə bölünməlidir, buna görə də tək üçün istifadə edirik.
\gcd(n,10)=2 olduğu halda, bu halda sonuncu rəqəm 2,4,6,8-dən biri olur, amma deyil, buna görə də cavab olaraq istifadə edə bilərik.
\gcd(n,10)=5 olduğu halda, bu halda sonuncu rəqəm olur, buna görə də istifadə edə bilərik.
İndi son hal \gcd(n,10)=10 olduğu halda, bu halda və -də bitməməsi üçün -nin və -in qüvvələrini ayırmaq optimaldır, bu, -i bölən -in maksimum qüvvəsini və -nin maksimum qüvvəsini hesablamaqla \mathcal{O}(\log_5(n)), \mathcal{O}(\log_2(n)) ilə həyata keçirilə bilər.
p_2,p_5 -i bölən və -in maksimum qüvvələri olsun, o zaman birinci ədəd olaraq \min(2^{p_2},5^{p_5}) istifadə etmək optimaldır və ikinci ədəd olaraq \frac{n}{\max(2^{p_2},5^{p_5})} istifadə etmək optimaldır.
Komplekslik \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()