Cod sursa(job #3283826)

Utilizator stefan1010Stefan Bogdan stefan1010 Data 10 martie 2025 16:03:57
Problema GFact Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#define NMAX 6e13
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int p,q,d,v[11],exp[11],ndiv;

long long nrap(long long n,int p)
{
    long long nr=0;
    while(n>=p)
    {
        nr+=(n/=p);
    }
    return nr;
}
int este_bun_b(long long b)
{
    for(int i=1;i<=ndiv;i++)
    {
        if(exp[i]*q>nrap(b,v[i]))
            return 0;
    }
    return 1;
}
int main()
{
    fin>>p>>q;
    int d=2;
    while(d*d<=p)
    {
        int e=0;
        while(p%d==0)
        {
            e++;
            p/=d;
        }
        if(e)
        {
            v[++ndiv]=d;
            exp[ndiv]=e;
        }
        d++;
    }
    if(p>1)
    {
        v[++ndiv]=p;
        exp[ndiv]=1;
    }
    long long st=1,dr=NMAX,rez=NMAX+1;
    while(st<=dr)
    {
        long long m=(st+dr)/2;
        if(este_bun_b(m)==0)
            st=m+1;
        else
        {
            rez=m;
            dr=m-1;
        }
    }
    fout<<rez;
    return 0;
}