Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- 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 = long long;
- using ull = unsigned long long;
- ll mod = 1'000'000'007;
- int main() {
- ios_base::sync_with_stdio(false);
- 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=2; i*i<=a; i++) {
- while (aa % i == 0) {
- aa /= i;
- ma[i]++;
- }
- if (aa == 1)
- break;
- }
- if (aa != 1)
- ma[aa]++;
- for (ll i=2; i*i<=b; i++) {
- while (bb % i == 0) {
- bb /= i;
- mb[i]++;
- }
- if (bb == 1)
- break;
- }
- if (bb != 1)
- mb[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