Pagini recente » Cod sursa (job #991927) | Cod sursa (job #728832) | Cod sursa (job #1698790) | Cod sursa (job #1377266) | Cod sursa (job #1675555)
#include <stdio.h>
using namespace std;
FILE*f=fopen("frac.in","r");
FILE*g=fopen("frac.out","w");
long long h,v[101];
long long nr(long long m)
{
long long p,r=0,j,i;
for (i=1;i<(1<<h);i++)
{
p=-1;
for (j=0;j<h;j++)
if ((1<<j)&i)
{
p=(long long)p*(-v[j+1]);
}
r+=(long long)m/p;
}
return m-r;
}
int main()
{
long long n,k,i,p,u,m,r=0;
fscanf(f,"%lld%lld",&n,&k);
m=n;h=0;
for (i=2;i*i<=m;i++)
{
if (!(n%i)) v[++h]=i;
while (!(n%i)) n/=i;
}
n=m;
p=1;u=(long long)1<<61;
while (p<=u)
{
m=(p+u)/2;
if (nr(m)<k)
{
p=m+1;
}
else
{
r=m;
u=m-1;
}
}
fprintf(g,"%lld",r);
fclose(g);
fclose(f);
return 0;
}