Cod sursa(job #1702216)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 14 mai 2016 19:18:45
Problema GFact Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
# include <fstream>
# define INF 1000000000000000000LL
# define DIM 10000000
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long d[2][DIM/2],x,y,z,i,nr,k,ok,st,dr,mij,nr1;
int main () {
    fin>>x>>y;
    z=x;
    i=2;
    while(z!=1&&i*i<=x){
        nr=0;
        while(z%i==0){
            nr++;
            z/=i;
        }
        if(nr!=0){
            d[0][++k]=i;
            d[1][k]=nr*y;
        }
        i++;
    }
    if(z!=1){
        d[0][++k]=z;
        d[1][k]=y;
    }
    st=1;
    dr=INF;
    while(st<=dr){
        mij=(st+dr)/2;
        ok=1;
        for(i=1;i<=k;i++){
            z=d[0][i];
            nr1=0;
            while(z<mij&&nr1<d[1][i]){
                nr1+=mij/z;
                z*=d[0][i];
            }
            if(nr1<d[1][i])
                ok=0;
        }
        if(ok)
            dr=mij-1;
        else
            st=mij+1;
    }
    fout<<st<<"\n";
    return 0;
}