Cod sursa(job #1701554)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 13 mai 2016 14:20:53
Problema GFact Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
# include <fstream>
# define INF 1000000000000000000LL
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long mij,st,dr,r;
int d[2][7000000],a,b,s,i,k,nr,ok,ri;
int main () {
    fin>>a>>b;
    r=a;
    i=2;
    while(i*i<=a||r!=1){
        nr=0;
        while(r%i==0){
            nr++;
            r/=i;
        }
        if(nr){
            d[1][++k]=i;
            d[2][k]=nr*b;
        }
        i++;
    }
    if(r!=1){
        d[1][++k]=r;
        d[2][k]=1;
    }
    st=1;
    dr=INF;
    while(st<=dr){
        mij=(st+dr)/2;
        ok=1;
        for(i=1;i<=k;i++){
            r=d[1][i];
            ri=d[1][i];
            s=0;
            while(s<d[2][i]&&r<=mij){
                s+=mij/r;
                r*=ri;
            }
            if(s<d[2][i])
                ok=0;
        }
        if(ok)
            dr=mij-1;
        else
            st=mij+1;
    }
    fout<<st<<"\n";
    return 0;
}