Pagini recente » Cod sursa (job #447862) | Cod sursa (job #3271991) | Cod sursa (job #2943801) | Cod sursa (job #1391904) | Cod sursa (job #1813335)
#include<fstream>
#include<vector>
#include<string>
#define modulo 666013
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
string sir;
long long int i, n, k, j,contor,st,dr,sol,x,y,p,q ;
long long int cauta(long long int exponent, long long int putere)
{
long long int i, st = 1, dr = 1LL<<60,mid, x, R;
while(st <= dr)
{
mid = (st + dr) / 2;
R = 0;
for(x = exponent; x <= mid; x *= exponent){
R += mid / x;
}
//fout<<"R-"<< R <<"\n";
if(R >= putere){
dr = mid - 1;
} else {
st = mid + 1;
}
}
return st;
//fout << pas <<"\n";
}
int main()
{
fin >> p >> q;
sol = 0;
for(i = 2; i * i <= p; i++)
{
if(p % i == 0)
{
long long int putere = 0;
while(p % i == 0)
{
p = p / i;
putere += q;
}
//fout <<i <<" "<<exponent<<"\n";
//cauta(i,exponent);
sol = max(sol ,cauta(i, putere) );
//fout <<sol<< "\n";
}
}
if(p > 1)
{
sol = max(sol ,cauta(p, q) );
//fout <<p << " 1\n";
}
fout << sol << "\n";
}