Cod sursa(job #3331076)

Utilizator postolacheepostolache postolachee Data 24 decembrie 2025 11:51:28
Problema GFact Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>
#define int long long
#pragma GCC optimize ("O3")
#define pb push_back
using namespace std;
#define f first 
#define s second

int caut(int c, int d){
    int l = 1, r = 2 * c * d;

    while(l + 1 < r){
        int mid = (l + r) / 2;
        int cnt = 0, pw = d;

        while(pw <= mid){
            cnt += mid / pw;
            if(pw > mid / d) break;
            pw *= d;
        }

        if(cnt >= c)r = mid;
         else l = mid;
    }

    return r;
}

signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    ifstream cin ("gfact.in");
    ofstream cout ("gfact.out");

    int p, q;cin >> p >> q;
    int ff = 0;

    for(int div=2;div * div <= p;div++){
        int c = 0;
        while(p % div == 0){
            p /= div;
            c++;
        }
        if(c != 0)ff = max(ff, caut(c * q, div));
    }

    if(p > 1)ff = max(ff, caut(q, p));

    cout << ff << "\n";
    return 0;
}