Cod sursa(job #1605809)

Utilizator RazvanatorHilea Razvan Razvanator Data 19 februarie 2016 15:25:01
Problema GFact Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;

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

long long int a,b,n=0;

long long int gfact(long long int nr,long long int div)
{
    long long int r=0;
    while (nr>=div) {
        r+=nr/div;
        nr/=div;
    }
    return r;
}

long long int caut_bin(long long int n,long long p)
{
    long long int pas=1<<30,i=0;
    pas*=pas;
    while (pas!=0) {
        if (gfact(i+pas,n)<n && i+pas<=p*n) i+=pas;
        pas/=2;
    }
    return i+1;
}

int main()
{
    long long int d=2,nr,putere;
    fin>>a>>b;
    while (a>1) {
        nr=0;
        putere=0;
        if (d*d>a) d=a;
        while (a%d==0) {
            putere++;
            a/=d;
        }
        if (putere>0) nr=caut_bin(d,putere*b);
        if (nr>n) n=nr;
        d++;
    }
    fout<<n;
}