Cod sursa(job #1119021)

Utilizator TibixbAndrei Tiberiu Tibixb Data 24 februarie 2014 14:35:03
Problema GFact Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
using namespace std;
long long  i, n, k, v[300003], m[1000003], nr, p, u, mij, ok, xer, kij;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int main(){
    fin>>n>>k;
    for(i=2; i*i<=n; i++){
        if(n%i==0){
            v[++nr]=i;
            while(n%i==0){
                m[i]+=k;
                n/=i;
            }
        }
    }
    if(n!=1){
        v[++nr]=n;
        m[n]=k;
    }
    p=1; u=20000000000;
    while(p<=u){
        ok=0;
        mij=p+(u-p)/2;
        for(i=1; i<=nr; i++){
            xer=0; kij=v[i];
            while(mij/kij!=0){
                xer+=mij/kij;
                kij*=v[i];
            }
            if(xer<m[v[i]]){
                ok=1;
                break;
            }
        }
        if(ok==1)
            p=mij+1;
        else
            u=mij-1;
    }
    fout<<p;
return 0;
}