Cod sursa(job #2966814)

Utilizator LucaMuresanMuresan Luca Valentin LucaMuresan Data 18 ianuarie 2023 15:15:19
Problema GFact Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>

using namespace std;

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

#define int long long

vector<pair<int, int>>divs;

bool check (int x)
{
    for (int k=0; k<divs.size(); k++)
    {
        int n = divs[k].first, m = divs[k].second;

        int e = 0, p = n;
        while (p <= x)
            e += x / p, p *= n;
        if (e < m)
            return false;
    }

    return true;
}

signed main()
{
    int x, y;
    in >> x >> y;

    int d = 2;
    while (d * d <= x)
    {
        int e = 0;
        while (x % d == 0)
            x /= d, e++;
        if (e)
            divs.push_back({d, e*y});
        d++;
    }

    if (x > 1)
        divs.push_back({x, y});

    int l=1, r=1e18;

    while (l < r)
    {
        int mid = (l + r) / 2;

        if (check(mid))
            r = mid;
        else
            l = mid + 1;
    }

    out << r;

    return 0;
}