Cod sursa(job #3283812)

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

int nrap(int n,int p)
{
    int nr=0;
    while(n>=p)
    {
        nr+=(n/=p);
    }
    return nr;
}
int este_bun_b(int 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;
    }
    int st=1,dr=NMAX,rez=NMAX+1;
    while(st<=dr)
    {
        int m=1LL*(st+dr)/2;
        int pp=este_bun_b(m);
        if(pp==0)
            st=m+1;
        else
        {
            rez=m;
            dr=m-1;
        }
    }
    fout<<rez;
    return 0;
}