Cod sursa(job #3315971)

Utilizator RuxandraPro12_Metehau Ruxandra Maria RuxandraPro12_ Data 16 octombrie 2025 17:16:03
Problema GFact Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
#include <iostream>

using namespace std;

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

long long p, q, divizor[15], putere[15], m;

long long multipli (long long n, long long x) {
    long long y = x, cnt = 0;
    while (y <= n) {
        cnt += n / y;
        y *= x;
    }
    return cnt;
}

bool poate (long long n) {
    for (long long i = 1; i <= m; i++) {
        if (multipli (n, divizor[i]) < putere[i])
            return false;
    }
    return true;
}

int main() {
    fin >> p >> q;
    long long d = 2;
    while (d * d <= p) {
        int exponent = 0;
        while (p % d != 0) {
            exponent++;
            p /= d;
        }
        if (exponent != 0) {
            divizor[++m] = d;
            putere[m] = exponent * q;
        }
        d++;
    }
    if (p > 1) {
        divizor[++m] = p;
        putere[m] = q;
    }
    long long st = 1, dr = 6 * 1e13, sol = 0;
    while (st <= dr) {
        long long m = (st + dr) / 2;
        if (poate(m) == true) {
            sol = m;
            dr = m - 1;
        }
        else
            st = m + 1;
    }
    fout << sol << "\n";
    return 0;
}