Cod sursa(job #1701553)

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