Pagini recente » Cod sursa (job #2492684) | Cod sursa (job #1620144) | Cod sursa (job #183949) | Cod sursa (job #125939) | Cod sursa (job #1719595)
#include <cstdio>
using namespace std;
long long n,nr,b[102],a[4002],c[4002];
int main()
{
freopen("patrate2.in", "r", stdin);
freopen("patrate2.out", "w", stdout);
scanf("%d", &n);
int arie=n*n;
while(arie>0){
b[++nr]=arie%2;
arie/=2;
}
a[0]=1;a[1]=1;
for(int i=nr;i>=1;--i){
c[0]=a[0]+a[0]-1;
for(int j=1;j<=a[0];++j)
for(int t=1;t<=a[0];++t){
c[j+t-1]+=a[j]*a[t];
}
a[0]=c[0];
int t=0;
for(int i=1;i<=c[0];++i){
t=(c[i]+=t)/10;
c[i]=c[i]%10;
a[i]=c[i];c[i]=0;
}
if(t)
a[++a[0]]=t;
if(b[i]==1){
for(int j=a[0];j>=1;--j){
a[j]*=2;a[j+1]+=a[j]/10;
a[j]=a[j]%10;
}
if(a[a[0]+1]>0) ++a[0];
}
}
for(int i=2;i<=n;++i){
for(int j=a[0];j>=1;--j){
a[j]*=i;a[j+1]+=a[j]/10;
a[j]=a[j]%10;
}
for(int j=1;j<=a[0];++j){
a[j+1]+=a[j]/10;
a[j]=a[j]%10;
}
while(a[a[0]+1]>0){
++a[0];
a[a[0]+1]=a[a[0]]/10;
a[a[0]]=a[a[0]]%10;
}
}
if(a[a[0]+1]>0) ++a[0];
for(int i=a[0];i>=1;--i)
printf("%d",a[i]);
return 0;
}