Pagini recente » Cod sursa (job #1933926) | Cod sursa (job #1490800) | Cod sursa (job #2027736) | Cod sursa (job #2620396) | Cod sursa (job #2093380)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int prim(int a){
for(int i=2;i*i<=a;++i){
if(a%i==0)
return 0;
}
return 1;
}
int leg(int a,int p){
int rez=1,q=0;
while(rez*p<=a){
rez*=p;
q+=a/rez;
}
return q;
}
int main()
{
ifstream cin("gfact.in");
ofstream cout("gfact.out");
int p,q,fact=0;
cin>>p>>q;
for(int i=sqrt(p);i>=p;i++){
if(p%i==0 && prim(i)==1){
fact=p;
break;
}
}
if(fact==0)
fact=p;
long long dr=fact*q,st=1,sol;
while(st<=dr){
long long poz=(st+dr)/2;
if(leg(poz,fact)>=q){
sol=poz;
dr=poz-1;
}
else
st=poz+1;
}
cout<<sol;
return 0;
}