Cod sursa(job #2013126)

Utilizator MihneaGhiraMihnea MihneaGhira Data 20 august 2017 16:32:15
Problema Patrate2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
#include<bitset>
#include<cstring>
using namespace std;
ifstream fin("patrate2.in");
ofstream fout("patrate2.out");
int n,i;
int P[100001],F[10001];

void mul2(int A[], int B){
    int i,t=0;
    for(i=1;i<=A[0] || t;i++,t/=10)
        A[i]=(t+=A[i]*B)%10;
    A[0]=i-1;
}

void mul(int A[], int B[]){
    int i,j,t, C[10010];
    memset(C,0,sizeof(C));
    for(i=1;i<=A[0];i++){
        for(t=0,j=1;j<=B[0]||t;j++,t/=10)
            C[i+j-1]=(t+=C[i+j-1]+A[i]*B[j])%10;
        if(i+j-2>C[0])
            C[0]=i+j-2;

    }
    memcpy(A,C,sizeof(C));

}

int main(){
    fin>>n;
    P[0]=1;
    P[1]=1;
    for(i=1;i<=n*n;i++)
        mul2(P,2);
    F[0]=1;
    F[1]=1;
    for(i=2;i<=n;i++)
        mul2(F,i);
    mul(P,F);
    for(i=P[0];i>=1;i--)
        fout<<P[i];
    return 0;
}