Cod sursa(job #1805060)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 13 noiembrie 2016 13:52:05
Problema GFact Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<fstream>
#define XP long long
using namespace std;
ifstream f("gfact.in");
ofstream g("gfact.out");
int p,q,i,e;
XP sol;
XP putere(XP n,int p)
{
    XP rez=0;
    while(n)
    {
        n/=p;
        rez+=n;
    }
    return rez;
}
void caut(int a,int x)
{
    XP i,pas=1LL<<60;
    for(i=0;pas;pas>>=1)
        if (putere(i+pas,a)<x) i+=pas;
    sol=max(sol,i+1);
}
int main()
{
    f>>p>>q;
    for(i=2;i*i<=p;++i)
        if(p%i==0)
        {
            e=0;
            while(p%i==0)
            {
                p/=i;
                e+=q;
            }
            caut(i,e);
        }
    if(p>1) caut(p,q);
    g<<sol;
    return 0;
}