Cod sursa(job #2891222)

Utilizator hobbitczxdumnezEU hobbitczx Data 17 aprilie 2022 21:23:47
Problema GFact Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("gfact.in");
ofstream fout ("gfact.out");

long long d = 2;
int p , q , ans , n;
vector<pair<int , int>>v;

bool solve (int x){
    for (int i=0; i<n; i++){
        int n = x , cnt = 0 , dv = v[i].first;
        while (n > 0){
            cnt += n / dv;
            n = n / dv;
        }
        if (cnt < v[i].second){
            return false;
        }
    }
    return true;
}

int main(){
    ios_base::sync_with_stdio(false);
    fin.tie(NULL);
    fin >> p >> q;
    while (p > 1){
        int z = 0;
        while (p % d == 0){
            p = p / d;
            z += 1;
        }
        if (z > 0){
            v.push_back(make_pair(d , z * q));
        }
        d += 1;
        if (d * d > p && p > 1){
            d = p;
        }
    }
    n = v.size();
    int st = 1 , dr = 2e9;
    while (st <= dr){
        int mij = st + (dr - st) / 2;
        if (solve(mij)){
            ans = mij;
            dr = mij - 1;
        }
        else{
            st = mij + 1;
        }
    }
    fout << ans;
}