Pagini recente » Cod sursa (job #1601624) | Cod sursa (job #2087670) | Cod sursa (job #271887) | Cod sursa (job #174738) | Cod sursa (job #2222950)
#include <bits/stdc++.h>
using namespace std;
vector <long long int> v;
long long int p,ans,a = 1,val;
bool ok = 1;
void func(int pc)
{
if (val < a)
return;
if (ok)
ans += val / a;
else
ans -= val / a;
ok ^= 1;
for (int i = pc - 1;i >= 0;i--)
{
a *= v[i];
func(i);
a /= v[i];
}
}
long long int cb()
{
long long int pas = 1LL<<61,r = 0;
while (pas > 0)
{
ans = 0;
val = r + pas;
ok = 1;
a = 1;
func(v.size());
if (ans < p)
r += pas;
pas >>= 1;
}
return r + 1;
}
int main()
{
ifstream fin("frac.in");
ofstream fout("frac.out");
int b = 2;
long long int n;
fin >> n >> p;
while (b * b <= n)
{
if (n % b == 0)
{
v.push_back(b);
while (n % b == 0)
n /= b;
}
b++;
}
if (n > 1)
v.push_back(n);
fout << cb();
return 0;
}