Pagini recente » Cod sursa (job #632105) | Cod sursa (job #2158639) | Cod sursa (job #1226294) | Cod sursa (job #2496900) | Cod sursa (job #1234388)
#include <fstream>
using namespace std;
ifstream fin("frac.in");
ofstream fout("frac.out");
long long n,p,i,R,lo,mi,hi,v[100],lg,j,sol;
int main()
{
fin>>n>>p;
v[1]=1;lg=1;
for(i=2;i*i<=n;i++)
{
if(n%i==0)
{
while(n%i==0)n/=i;
for(j=1;j<=lg;j++)
v[j+lg]=-v[j]*i;
lg*=2;
}
}
if(n>1)
{
for(j=1;j<=lg;j++)
v[j+lg]=-v[j]*i;
lg*=2;
}
R=1LL;R<<=3;R<<=29;R<<=29;
for(lo=0,hi=R;hi-lo>1;)
{
mi=(lo+hi)/2;
for(sol=0,i=1;i<=lg;i++)
sol+=mi/v[i];
if(sol<p)lo=mi;
else hi=mi;
}
fout<<hi;
return 0;
}