Submission #374492

#TimeUsernameProblemLanguageResultExecution timeMemory
374492topovikEuklid (COCI20_euklid)C++14
20 / 110
10 ms7276 KiB
#include <bits/stdc++.h>
#define f first
#define s second
#define pb push_back

using namespace std;

typedef long long ll;
typedef long double ld;

const int N = 1e3 + 100;

int val[N][N];

int f(int x, int y)
{
    if (x < y) swap(x, y);
    if (y == 1) return x;
    if (val[x][y] != 0) return val[x][y];
    else return val[x][y] = f(x / y, y);
}

int main()
{
    int t;
    cin >> t;
    while (t--)
    {
        ll x, y;
        cin >> x >> y;
        if (x == y)
        {
            cout << x << " " << x << endl;
            continue;
        }
        if (y == 2)
        {
            cout << x << " " << 2 * x << endl;
            continue;
        }
        if (x == y * y)
        {
            cout << x << " " << x * y << endl;
            continue;
        }
        int l = -1, r = -1;
        for (int i = 1; i < N; i++)
            for (int j = 1; j < N; j++)
              if (__gcd(i, j) == 1 && f(i * x, j * x) == y) {l = i, r = j;break;}
        cout << l << " " << r << endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...