Cod sursa(job #1301961)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 26 decembrie 2014 15:14:56
Problema GFact Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#define DIM 2000000000
using namespace std;

ifstream fin("gfact.in");
ofstream fout("gfact.out");
int p,q,i,j,st,dr,mid,nr,minim=DIM;
int a[60000],b[60000];
int verif(int x){
    int i,nrap,aux;
    for(i=1;i<=nr;i++){
        nrap=0;
        aux=a[i];
        while(x/aux!=0){
            nrap+=x/aux;
            aux*=a[i];
        }
        if(nrap<b[i])
            return 0;
    }
    return 1;
}
int main(){
    fin>>p>>q;
    for(i=2;i*i<=p;i++){
        if(p%i==0){
            a[++nr]=i;
            while(p%i==0)
                b[nr]+=q,p/=i;
        }
    }
    if(p!=1){
        a[++nr]=p;
        b[nr]=q;
    }
    st=1;dr=DIM;
    while(st<=dr){
        mid=(st+dr)>>1;
        if(verif(mid)){
            if(mid<minim)
                minim=mid;
            dr=mid-1;
        }
        else
            st=mid+1;
    }
    fout<<minim;
    fin.close();fout.close();
    return 0;
}