Cod sursa(job #2528673)

Utilizator pascu.dacian@gmail.comPascu Dacian [email protected] Data 22 ianuarie 2020 12:58:36
Problema GFact Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>

using namespace std;


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

int a,d,p,n,f[50],c[50],k,q;

long long putere(long long n,int f)
{

    long long sum=0;
    while(n>=f)
    {
        sum += n/f;
        n/=f;
    }
    return sum;
}

bool ok(long long n)
{
    for( int i=1; i<=k; i++)
    {
        if (putere(n,f[i]) < (long long)c[i]*q)
        {
            return false;
        }

    }
    return true;
}

int main()
{

    k=0;
    fin>>n>>q;
    int d = 2,p;
    while(d * d <= n)
    {
        p = 0;
        while(n % d == 0)
        {
            ++p;
            n /= d;
        }

        if(p)
        {
            k++;
            f[k]=d;
            c[k]=p;
        }
        ++ d;
    }
    if (n > 1)
    {
        f[++k] = n;
        c[k] = 1;
    }
    long long st,dr,m;
    st=1;
    dr = 6e13;
    while(st<dr)
    {
        m=(st+dr)/2;
        if(ok(m))
            dr=m;
        else
            st=m+1;

    }
    fout<<st;
    return 0;

}