Pagini recente » Cod sursa (job #423920) | Cod sursa (job #2142050) | Cod sursa (job #687852) | Cod sursa (job #1292605) | Cod sursa (job #1971995)
#include <fstream>
using namespace std;
ifstream fin("frac.in");
ofstream fout("frac.out");
long long c[50],n,k,x,y,i,p,u,m,pr,j;
int main()
{
fin >> n >> k;
for (i = 2; i * i <= n; i++)
if (n % i==0)
{
while (n % i == 0)
n /= i;
c[++x] = i;
}
if (n != 1)
c[++x] = n;
p = 1;
u = (long long)1 << 61;
while (p <= u)
{
m = (p + u) / 2;
y = m;
for (i = 1; i < (1 << x); i++)
{
pr = 1;
for (j = 0; j <= x; j++)
if ((i & (1 << j)) > 0)
pr *= -c[j + 1];
y += m / pr;
}
if (y < k)
p = m + 1;
else u = m - 1;
}
fout << p;
fin.close();
fout.close();
return 0;
}