Cod sursa(job #1608850)

Utilizator RazvanatorHilea Razvan Razvanator Data 22 februarie 2016 13:46:00
Problema GFact Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>

using namespace std;

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

long long p,q;

long long div1(long long n,long long d)
{
    long long r=0;
    while (n>=d)
    {
        r+=n/d;
        n/=d;
    }
    return r;
}

long long caut_bin(long long d,long long putere)
{
    long long i=0,pas=1<<30;
    pas*=pas;
    while (pas!=0)
    {
        if (div1(i+pas,d)<putere && i+pas<=d*putere) i+=pas;      // !!!
        pas/=2;
    }
    return i+1;
}

int main()
{
    long long d=2,pow=0,max=0,r;
    fin>>p>>q;
    while (p>1)
    {
        r=0;
        pow=0;
        if (d*d>p) d=p;
        while (p%d==0) {pow++;p/=d;}
        if (pow!=0) r=caut_bin(d,pow*q);
        if (r>max) max=r;
        d++;
    }
    fout<<max;
    return 0;
}