Cod sursa(job #1301986)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 26 decembrie 2014 15:30:49
Problema GFact Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#define DIM 4000000002
using namespace std;

ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long p,q,i,j,st,dr,mid,nr;
long long a[100000],b[100000];
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)/2;
        if(verif(mid)){
            dr=mid-1;
        }
        else
            st=mid+1;
    }
    fout<<st;
    fin.close();fout.close();
    return 0;
}