Cod sursa(job #3353488)

Utilizator Hutanu_MaiaHutanu Ioana-Maia Hutanu_Maia Data 7 mai 2026 18:31:17
Problema GFact Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int p,q;
struct prim
{
    int nr,p;
};
vector<prim> v;
long long calc(long long d,long long x)
{
    long long cop=d,rez=0;
    while(x>=d)
    {
        rez+=x/d;
        d*=cop;
    }
    return rez;
}
bool verif(long long nr)
{
    for(int i=0; i<v.size(); i++)
    {
        if(calc(v[i].nr,nr)<v[i].p)
            return 0;
    }
    return 1;
}
int main()
{
    fin>>p>>q;
    int d=2;
    while(p>1)
    {
        if(p%d==0)
        {
            v.push_back({d,0});
            while(p%d==0)
            {
                p/=d;
                v.back().p++;
            }
            v.back().p*=q;
        }
        d++;
        if(p>1 && d*d>p)
            d=p;
    }
    long long st=1,dr=LLONG_MAX,mij=0,rez=0;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(verif(mij))
        {
            dr=mij-1;
            rez=mij;
        }
        else
            st=mij+1;
    }
    fout<<rez;
    return 0;
}