Pagini recente » Cod sursa (job #625117) | Cod sursa (job #605987) | Cod sursa (job #449022) | Cod sursa (job #3280901) | Cod sursa (job #1830825)
#include <bits/stdc++.h>
using namespace std;
int a[10005],b[10005],c[10005],d[10005];
void fact(int);
void scalar(int [],int);
void aduna(int [],int [],int);
void mult(int [],int []);
void power(int,int);
int n;
int main(){
freopen("patrate2.in","r",stdin);
freopen("patrate2.out","w",stdout);
cin>>n;
fact(n);
power(2,n*n);
mult(a,b);
for (int i=c[0];i>0;i--){
cout<<c[i];
}
}
void fact(int n){
int t=0;
a[0]=a[1]=1;
for (int nr=2;nr<=n;nr++){
t=0;
for (int i=1;i<=a[0];i++){
a[i]=a[i]*nr+t;
t=a[i]/10;
a[i]=a[i]%10;
}
while (t){
a[++a[0]]=t%10;
t/=10;
}
}
}
void power(int base,int exponent){
int t=0;
b[0]=b[1]=1;
for (int nr=1;nr<=exponent;nr++){
t=0;
for (int i=1;i<=b[0];i++){
b[i]=b[i]*base+t;
t=b[i]/10;
b[i]=b[i]%10;
}
while (t){
b[++b[0]]=t%10;
t/=10;
}
}
}
void mult(int a[],int b[]){
for (int i=1;i<=a[0];i++){
scalar(b,a[i]);
aduna(c,d,i-1);
}
}
void scalar(int a[],int s){
int t=0;
d[0]=a[0];
for (int i=1;i<=a[0];i++){
d[i]=a[i]*s+t;
t=d[i]/10;
d[i]%=10;
}
while (t){
d[++d[0]]=t%10;
t/=10;
}
}
void aduna(int a[],int b[],int pos){
int t=0;
a[0]=b[0]+pos;
for (int i=1;i<=b[0];i++){
a[i+pos]+=b[i]+t;
t=a[i+pos]/10;
a[i+pos]%=10;
}
while (t){
a[++a[0]]=t%10;
t/=10;
}
}