結果

問題 No.1723 [Cherry 3rd Tune *] Dead on
ユーザー tassei903
提出日時 2021-10-29 22:15:18
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
TLE  
実行時間 -
コード長 1,910 bytes
コンパイル時間 937 ms
コンパイル使用メモリ 94,236 KB
最終ジャッジ日時 2025-01-25 09:01:38
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 32 TLE * 18
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <set>
#include <queue>
#include <tuple>
#include <map>
using namespace std;
using ll = long long;
using ull = unsigned long long;

#define rep(i,n) for(long long i = 0; i < (int)n; i++)

#define FOR(i, m, n) for(long long i = (m);i < (n); ++i)
#define ALL(obj) (obj).begin(),(obj).end()
#define SPEED cin.tie(0);ios::sync_with_stdio(false);

template<class T> using V = vector<T>;
template<class T, class U> using P = pair<T, U>;
template<class T> using PQ = priority_queue<T>;
template<class T> using PQR = priority_queue<T,vector<T>,greater<T>>;


void print(V<ll> ar) {
    for(auto x: ar)cout << x << " " ;
    cout << endl;
}

ll gcd(ll a, ll b) {
    if (a<b)return gcd(b,a);
    if (b==0)return a;
    return gcd(b, a%b);
}

ll mpow(ll x, ll n, ll p) {
    ll r = 1;
    while (n>0) {
        if (n%2) {
            r*=x;
            r%=p;
        }
        x *= x;
        x %= p;
        n/=2;
    }
    return r;
}
const ll mod = 998244353;

V<P<int,int>> facts(ll n) {
    V<P<int,int>> res;
    if (n==1)return res;

    for(int x = 2; x*x<=n; x++) {
        if (n%x==0) {
            int p = 0;
            while (n%x==0) {
                p+=1;
                n/=x;
            }
            res.emplace_back(P<int,int>(x, p));
        }
    }
    if (n!=1) {
        res.emplace_back(P<int,int>(n, 1));
    }
    return res;
}


int main()
{
    ll x, y, a, b;
    cin >> x >> a >> y >> b;
    V<P<int, int>> d1 = facts(x), d2 = facts(y);
    map<ll,int> mp;
    for(auto i : d1) {
        ll c = i.first;
        int d = i.second;
        mp[c] = d;
        //print({c,d});
    }
    for(auto i : d2) {
        ll c = i.first;
        int d = i.second;
        //print({mp[c],c,d});
        if (mp[c]*a<d*b) {
            cout << "No" << endl;
            return 0;
        }
    }
    cout << "Yes" << endl;
}
0