Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #pragma GCC optimize("Ofast")
- using namespace std;
- #define times(I, X) for (ll I=0; I<(X); I++)
- #define rtimes(I, X) for (ll I=(X)-1; I>=0; I--)
- #define all(X) (X).begin(), (X).end()
- #define rall(X) (X).rbegin(), (X).rend()
- #ifdef DEBUG
- #define dump(X) std::cout << __LINE__ << "L: [" << #X << "] = [" << X << "]" << endl
- #else
- #define dump(X)
- #endif
- using ll = int;
- using ull = unsigned long long;
- ll mod = 1'000'000'007;
- const int N = 1'000'000;
- int lp[N+1];
- vector<int> pr;
- void prr(){
- for (int i=2; i<=N; ++i) {
- if (lp[i] == 0) {
- lp[i] = i;
- pr.push_back (i);
- }
- for (int j=0; j<(int)pr.size() && pr[j]<=lp[i] && i*pr[j]<=N; ++j)
- lp[i * pr[j]] = pr[j];
- }}
- int main() {
- ios_base::sync_with_stdio(false);
- prr();
- ll t;
- cin >> t;
- times(_i, t) {
- ll a, b;
- cin >> a >> b;
- map<ll, ll> ma, mb;
- ll aa = a, bb = b;
- for (ll i: pr) {
- while (aa % i == 0) {
- aa /= i;
- ma[i]++;
- }
- if (aa == 1)
- break;
- }
- if (aa != 1)
- ma[aa]++;
- for (ll i: pr) {
- while (bb % i == 0) {
- bb /= i;
- mb[i]++;
- }
- if (bb == 1)
- break;
- }
- if (bb != 1)
- ma[bb]++;
- if (ma.size() != mb.size()) {
- cout << "No" << endl;
- goto net;
- }
- for (auto [mn, clva]: ma) {
- ll clvb = mb[mn];
- // dump(clva); dump(clvb); dump(mn); dump(2*clvb - clva);
- if ((2*clvb - clva) % 3 == 0 && (2*clvb - clva) >= 0) {} else {
- cout << "No" << endl;
- goto net;
- }
- }
- cout << "Yes" << endl;
- net:;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement