Pagini recente » Cod sursa (job #1199231) | Cod sursa (job #2884281) | Cod sursa (job #2150274) | Cod sursa (job #1110374) | Cod sursa (job #1903375)
#include <fstream>
#include <iostream>
using namespace std;
long long c[50],n,k,x,y,i,p,u,m,pr,j;
int main() {
ifstream f("frac.in");
ofstream g("frac.out");
f >> 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;
}
g << p;
f.close(), g.close();
return 0;
}