Pagini recente » Cod sursa (job #1060151) | Cod sursa (job #1762478) | Cod sursa (job #2242698) | Cod sursa (job #596884) | Cod sursa (job #50245)
Cod sursa(job #50245)
#include<fstream.h>
#include<math.h>
ifstream in("fractii.in");
ofstream out("fractii.out");
long int v[1000001],n,sol=1;
int a[20],c[20];
void fact(long int x)
{ long i;
if(x%2==0)
if((x/2)%2==0)
v[x]=v[x/2]*2;
else
v[x]=v[x/2];
else
{
double m=sqrt(x);
for(i=3;i<=m;i+=2)
if(x%i==0)
{
if((x/i)%i==0)
v[x]=v[x/i]*i;
else
v[x]=v[x/i]*(i-1);
i=x;
}
if((i-2)!=x)
v[x]=x-1;
}
}
void adunare(long int x)
{ int b[7]; long int i;
for(i=6;i>=0;i--)
{
b[i]=x%10;a[13+i]+=b[i];
x=x/10;
}
for(i=19;i>=0;i--)
if(a[i]/10!=0)
{
a[i-1]+=a[i]/10;
a[i]=a[i]%10;
c[i-1]=1;
}
}
int main()
{ long long i;
v[1]=1;
in>>n;
a[19]=1;
c[19]=1;
for(i=2;i<=n;i++)
{
fact(i);
adunare(2*v[i]);
} for(i=0;i<=19;i++)
if(c[i])out<<a[i];
return 0;
}