Pagini recente » Cod sursa (job #2170580) | Cod sursa (job #2048815) | Cod sursa (job #3939) | Cod sursa (job #2147199) | Cod sursa (job #991928)
Cod sursa(job #991928)
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <climits>
#include <algorithm>
#include <cmath>
using namespace std;
void show(long long int *al);
void inm(long long int* al, long long int* bl, long long int* dl);
void transforma(long long int sos, long long int* al);
void fshow(long long int *al);
void fact(long long int n, long long int* al);
ifstream fin ("patrate2.in");
ofstream fout("patrate2.out");
#define MAX 3200
long long int i,s,n,m,a1,t,j,l,d[2]={1,2},k,ci;
long long int a[MAX],b[MAX],c[MAX];
void inm(long long int* al, long long int* bl, long long int* dl)
{
long long int cl[MAX]={0};
cl[0]=al[0]+bl[0]-1;
for(i=1;i<=al[0];i++)
{
for(j=1;j<=bl[0];j++)
{
cl[i-1+j]+=al[i]*bl[j];
}
}
for(i=1;i<=cl[0];i++)
{
if(cl[i]>9)
{
cl[i+1]+=cl[i]/10;
cl[i]%=10;
}
}
if(cl[i])
cl[0]++;
for(i=0;i<=cl[0];i++)
{
dl[i]=cl[i];
}
}
void transforma(long long int sos, long long int* al)
{
long long int k=0;
while(sos)
{
al[++k]=sos%10;
sos/=10;
}
al[0]=k;
}
void show(long long int *al)
{
for(i=al[0];i>=1;i--)
{
cout<<al[i];
}
}
void fshow(long long int *al)
{
for(i=al[0];i>=1;i--)
{
fout<<al[i];
}
}
void fact(long long int n, long long int* al)
{
al[0]=al[1]=1;
for(k=2;k<=n;k++)
{
long long int par[4];
ci=k;
transforma(ci,par);
inm(par, al, al);
}
}
void doi(long long int los, long long int* al)
{
if(los<32)
transforma(1<<los,al);
else if((los&1)==0)
{
doi(los/2, al);
inm(al,al,al);
}
else
{
doi(los-1, al);
inm(d,al,al);
}
}
int main()
{
fin>>n;
doi(n*n,a);
fact(n,b);
inm(a,b,c);
fshow(c);
return 0;
}