Submission #342401

#TimeUsernameProblemLanguageResultExecution timeMemory
342401limabeansEuklid (COCI20_euklid)C++17
35 / 110
1093 ms2032 KiB
#include <bits/stdc++.h> using namespace std; template<typename T> void out(T x) { cout << x << endl; exit(0); } #define watch(x) cout << (#x) << " is " << (x) << endl using ll = long long; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int maxn = 1e6 + 10; bool sieve[maxn]; vector<int> primes; ll R(ll a, ll b) { if (a<b) swap(a,b); if (b==1) return a; return R(a/b, b); } void solve1(ll g, ll h) { assert(g==h); cout<<g<<" "<<g*g<<"\n"; } void solve2(ll g, ll h) { assert(h==2); cout<<2*g<<" "<<g<<"\n"; } void solve3(ll g, ll h) { assert(g==h*h); ll a = g*h; ll b = g; assert(R(a,b)==h); cout<<a<<" "<<b<<"\n"; } void solve(ll g, ll h) { for (ll x=1; ; x++) { auto idx = lower_bound(primes.begin(),primes.end(), x*h) - primes.begin(); if (idx == (int)primes.size()) { continue; } int p = primes[idx]; if (p/x == h) { ll A = p*g; ll B = x*g; if (R(A,B) == h) { //cout<<g<<" "<<h<<": "<<A<<" "<<B<<endl; assert(R(A,B)==h); assert(__gcd(A,B)==g); cout<<A<<" "<<B<<"\n"; return; } } } } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); for (int i=2; i<maxn; i++) { if (!sieve[i]) { primes.push_back(i); for (int j=2*i; j<maxn; j+=i) { sieve[j] = true; } } } int t; cin>>t; while (t--) { ll g,h; cin>>g>>h; if (g==h) { solve1(g,h); } else if (h==2) { solve2(g,h); } else if (g==h*h) { solve3(g,h); } else { solve(g,h); } } return 0; }
#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...