Pagini recente » Cod sursa (job #2350513) | Cod sursa (job #2777831) | Cod sursa (job #2833262) | Cod sursa (job #2885780) | Cod sursa (job #1534761)
#include <cstdio>
#include <algorithm>
using namespace std;
int p, q, F;
int gpf(int x)
{
int d = 2;
do
{
while((x % d) == 0)
x /= d;
d ++;
}
while(x != 1);
return d - 1;
}
int nf(int x)
{
int s = 0;
while(x)
{
x /= F;
s += x;
}
return s;
}
int bs(int fq)
{
int i = 0, pas = 1 << 15;
while(pas)
{
if(nf(i + pas) < fq)
i += pas;
pas /= 2;
}
return i;
}
int main()
{
freopen("gfact.in ", "r", stdin);
freopen("gfact.out", "w", stdout);
scanf("%d %d", &p, &q);
F = gpf(p);
int k = bs(q);
if(nf(k + 1) != q) printf("-1\n");
printf("%d\n", k + 1);
return 0;
}