Pagini recente » Cod sursa (job #1816536) | Cod sursa (job #2217190) | Cod sursa (job #1193106) | Cod sursa (job #1641522) | Cod sursa (job #1860813)
#include <cstdio>
using namespace std;
FILE *in,*out;
const int L = 30;
const int n = 2000000000;
int exp(int x,long long baza)
{
long long rez = 0;
while(x > 0)
{
rez += x/baza;
x /= baza;
}
return rez;
}
long long cauta(int x,long long baza)
{
long long pas = 1<<L,r = 0;
while(pas > 0)
{
if(r + pas < n && exp(r + pas,baza) < x)
r += pas;
pas /= 2;
}
return r+1;
}
int main()
{
in = fopen("gfact.in","r");
out = fopen("gfact.out","w");
int p,q;
fscanf(in,"%d %d",&p,&q);
int cp;
long long r = 0,d = 2;
cp = p;
while(d * d <= cp)
{
int putere = 0;
while(cp % d == 0)
{
putere ++;
cp /= d;
}
r = cauta(putere*q,d);
d++;
}
if(cp > 1)
r = cauta(q,cp);
fprintf(out,"%lld",r);
return 0;
}