Cod sursa(job #2042392)

Utilizator John_KappaNegoescu Ioan John_Kappa Data 18 octombrie 2017 16:06:10
Problema Patrate2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("patrate2.in");
ofstream g("patrate2.out");
int v[10001],n,fact[10001],a[100001];
void vs(int v[], unsigned long X)
{
    int i;
    unsigned long T=0;
    for (i=1; i<=v[0]; i++)
    {
        v[i]=v[i]*X+T;
        T=v[i]/10;
        v[i]=v[i]%10;
    }
    while (T)
    {
        v[++v[0]]=T%10;
        T/=10;
    }
}

void vv(int A[], int B[], int C[])
{
    int i,j,T=0;
  C[0]=A[0]+B[0]-1;
  for (i=1;i<=A[0]+B[0];) C[i++]=0;
  for (i=1;i<=A[0];i++)
    for (j=1;j<=B[0];j++)
      C[i+j-1]+=A[i]*B[j];
  for (i=1;i<=C[0];i++)
    { T=(C[i]+=T)/10;
      C[i]%=10;
    }
  if (T) C[++C[0]]=T;
}

int main()
{
    f>>n;
    int putere=n*n;
    v[0]=1;
    v[1]=2;
    fact[0]=1;
    fact[1]=1;
    for(int i=2; i<=putere; ++i)vs(v,2);
    for(int i=2; i<=n; ++i)vs(fact,i);
    vv(v,fact,a);
    for(int i=a[0]; i>0; --i)g<<a[i];
    return 0;
}