Cod sursa(job #2565038)

Utilizator etienAndrone Stefan etien Data 2 martie 2020 11:46:34
Problema GFact Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<fstream>
#include<iostream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long st,dr,mi,p,q,poz;
long long v[15],nrfact,k[15];
long long putere(long long f,long long nr)
{
    long long put=f,s=0;
    while(put<=nr)
    {
        s+=nr/put;
        put*=f;
    }
    return s;
}
bool good(long long nr)
{
    for(long long i=1;i<=nrfact;i++)
        if(k[i]>putere(v[i],nr))
            return 0;
    return 1;
}
int main()
{
    fin>>p>>q;
    for(long long d=2;d*d<=p;d+=d%2+1)
    {
        if(p%d==0)
        {
            v[++nrfact]=d;
            while(p%d==0)
            {
                p/=d;
                k[nrfact]++;
            }
            k[nrfact]*=q;
        }

    }
    if(p>1)
        {k[++nrfact]=q;
        v[nrfact]=p;}
    long long nr=1<<50;
    st=1;
    dr=nr;
    while(st<=dr)
    {
        mi=(st+dr)/2;
        if(good(mi))
        {
            dr=mi-1;
            poz=mi;
        }
        else st=mi+1;
    }
    fout<<poz;
}