Cod sursa(job #2444666)

Utilizator DBogdan23Dumitru Bogdan Mihai DBogdan23 Data 1 august 2019 01:02:57
Problema GFact Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("gfact.in");
ofstream out("gfact.out");
int v[31],putere[31],elem;
void descompunere(int n)
{
    long long i;
    for(i=3;i*i<=n;i+=2)
    {
        if(n%i==0)
        {
            v[++elem]=i;
            while(n%i==0)
            {
                putere[elem]++;
                n/=i;
            }
        }
    }
    if(n>1)
    {
        v[++elem]=n;
        putere[elem]=1;
    }
}
bool verific(long long x, long long q)
{
    long long s=0,b,i;
    for(i=1;i<=elem;i++)
    {
        s=0;
        b=v[i];
        while(b<=a)
        {
            s+=b/a;
            b*=v[i];
        }
        if(s<putere[i]*q)
            return 0;
    }
    return 1;
}
int main()
{
    long long p,q,i,mij,st=1,dr=(1LL<<50),ans;
    in>>p>>q;
    descompunere(p);
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(verific(mij,q))
        {
            dr=mij-1;
            ans=mij;
        }
        else
            st=mij+1;
    }
    out<<ans;
    return 0;
}