Cod sursa(job #2074128)

Utilizator dianamariaDiana Cataros dianamaria Data 24 noiembrie 2017 09:21:42
Problema GFact Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
using namespace std;
ifstream in ("gfact.in");
ofstream out ("gfact.out");
const int N=300;
int divz[N],exp[N],q;
long long n;

long long putere(long long b, int d)
{
    long long s=0;
    while (b>=d)
        s+=(b/=d);
    return s;
}

int sepoate(long long x)
{
    int i;
    for (i=1;i<=n;i++)
        if ( putere(x,divz[i]) < exp[i]*q )
            return 0;
    return 1;
}

int main()
{
    int p,i;
    long long r=0,pas=1LL<<60;
    in>>p>>q;
    for (i=2;i*i<=p;i++)
        if (p%i==0)
        {
            n++, divz[n]=i;
            while (p%i==0)
                p/=i, exp[n]++;
        }
    if (p>1)
        n++, divz[n]=p, exp[n]++;

    while (pas)
    {
        if (sepoate(r+pas)==0)
            r+=pas;
        pas/=2;
    }
    out<<r+1;
    return 0;
}