Pagini recente » Cod sursa (job #378363) | Cod sursa (job #99304) | Cod sursa (job #138227) | Cod sursa (job #956511) | Cod sursa (job #1537146)
#include <cstdio>
#include <algorithm>
using namespace std;
int p, q, F, Fm;
int gpf(int x)
{
int d = 2, io, fm = 0;
do
{
if (x % d == 0)
{
io = d;
Fm = fm;
}
fm = 0;
while((x % d) == 0)
{
x /= d;
fm ++;
}
if (d * d >= x)
{
Fm = max(Fm, fm);
return max(io, x);
}
d ++;
}
while(x != 1);
return io;
}
int nf(long long x)
{
int s = 0;
while(x)
{
x /= F;
s += x;
}
return s;
}
long long bs(long long fq)
{
long long i = 0, p = 1 << 30;
while(p)
{
if(nf(i + p) < fq)
i += p;
p /= 2;
}
return i;
}
int main()
{
freopen("gfact.in ", "r", stdin);
freopen("gfact.out", "w", stdout);
scanf("%d %d", &p, &q);
F = gpf(p);
printf("%d\n", Fm);
int k = bs(q * Fm);
printf("%d\n", k + 1);
return 0;
}