Pagini recente » Cod sursa (job #838537) | Cod sursa (job #1140736) | Cod sursa (job #2765016) | Cod sursa (job #740184) | Cod sursa (job #812975)
Cod sursa(job #812975)
#include<fstream>
#include<math.h>
using namespace std;
long long n,p,fac[30],nr=1;
void desc()
{
long long d,e,x=n,lim=sqrt((double)n);
d=2;
while(x>1&&d<=lim)
{
e=0;
while(x%d==0)
{
x=x/d;
e++;
}
if(e>0)
{
fac[nr]=d;
nr++;
}
d++;
}
if(x>1)
{
fac[nr]=x;
nr++;
}
}
long long ind_euler()
{
long long pr=n,i;
for(i=1;i<=nr-1;i++)
pr=pr/fac[i]*(fac[i]-1);
return pr;
}
long long ciur()
{
long long x,i,j,numarator=0;
for(i=1;i<=n;i++)
{
x=0;
j=1;
while(x==0&&j<nr)
{
if(i%fac[j]==0)
x++;
j++;
}
if(x==0)
{
numarator++;
if(numarator==p)
return i;
}
}
}
int main()
{
ifstream f("frac.in");
ofstream g("frac.out");
f>>n>>p;
desc();
long long i,ciclu;
i=ind_euler();
ciclu=p/i;
p=p%i;
if(p==0)
p=i;
i=ciur();
long long num=i+ciclu*n;
g<<num;
}