Cod sursa(job #2828444)

Utilizator AndreiBOTOBotocan Andrei AndreiBOTO Data 7 ianuarie 2022 12:33:47
Problema GFact Scor 75
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <iostream>
#include <fstream>

using namespace std;

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

long long p,x;

long long cond(long long n)
{
    long long a,b,nrn=0,put=0,d,copie,calc=2000000000;
    a=p;
    for(d=2;d*d<=a;d++)
    {
        put=0;
        copie=n;
        if(a%d==0)
        {
        nrn=0;
        while(a%d==0)
        {
            a=a/d;
            put++;
        }
        while(copie>=d)
        {
            copie=copie/d;
            nrn=nrn+copie;
        }
        nrn=nrn/put;
        calc=min(calc,nrn);
        }
    }
    if(a>=2)
    {
        nrn=0;
        copie=n;
        while(copie>=a)
        {
            copie=copie/a;
            nrn=nrn+copie;
        }
        calc=min(calc,nrn);
    }
    return calc;
}

long long cautbin()
{
    long long st=1,dr=1000000005;
    long long mij,a,ind=0;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        a=cond(mij);
        if(a>=x)
        {
            ind=mij;
            dr=mij-1;
        }
        else
            st=mij+1;
    }
        return ind;
}

int main()
{
    fin>>p>>x;
    fout <<cautbin()<<"\n";
    return 0;
}