Cod sursa(job #2613305)
Utilizator | Swan Katherine Katherine456719 | Data | 9 mai 2020 15:43:59 |
---|---|---|---|
Problema | Frac | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.77 kb |
#include <fstream>
using namespace std;
ifstream f("frac.in");
ofstream g ("frac.out");
long long c[51];
int main()
{
long long n,p;
f>>n>>p;
int k=0;
for(int i=2; i*i<=n; i++)
if(n%i==0)
{
while(n%i==0)
n/=i;
c[++k]=i;
}
if(n!=1)
c[++k]=n;
long long in=1,fin=1LL<<61;
while(in<=fin)
{
long long r, m=(in+fin)/2;
r=m;
for(int i=1; i<(1<<k); ++i)
{
long long pr=1;
for(int j=0; j<=k; ++j)
if(((1<<j) & i)>0)
pr*=-c[j+1];
r+=m/pr;
}
if(r<p)
in=m+1;
else
fin=m-1;
}
g<<in;
return 0;
}