Головний герой#12217

Головний герой (Розбір)

Автор проблеми:

De3b0o

Підготовлено:

De3b0o

Редагував:

Hasan Saleh (MathModel)

Рішення

Факт 1 : Завжди оптимально використовувати згідно з умовою максимального суми.

Давайте уважно розглянемо випадки, розглянемо випадок, коли непарне, ми можемо використовувати , оскільки непарне і неможливо, щоб непарне закінчувалося на , оскільки число, що закінчується на , повинно ділитися на і , отже, для непарного ми використовуємо .

Розглянемо випадок, коли \gcd(n,10)=2, у цьому випадку остання цифра може бути 2,4,6,8, але не , отже, ми можемо використовувати як відповідь.

Для випадку, коли \gcd(n,10)=5, у цьому випадку остання цифра , отже, ми можемо використовувати .

Тепер для останнього випадку \gcd(n,10)=10, у цьому випадку оптимально розділити степені і степені , щоб у жодному з і не було закінчення , це можна зробити, обчисливши максимальний ступінь , що ділить , і максимальний ступінь , що ділить за \mathcal{O}(\log_5(n)), \mathcal{O}(\log_2(n)) відповідно.

Нехай p_2,p_5 - максимальні степені і , що ділять , тоді оптимально використовувати \min(2^{p_2},5^{p_5}) як перше число і \frac{n}{\max(2^{p_2},5^{p_5})} як друге число.

Складність \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()