Cod sursa(job #1670008)

Utilizator murgoci1Gheorghe Murgoci murgoci1 Data 31 martie 2016 12:52:21
Problema Patrate2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 kb
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f("patrate2.in");
ofstream g("patrate2.out");
int i=1,n,t,p=1000,tr,mx=1,j;
unsigned long long v[50000];
int main()
{
    v[1]=1;
    f>>n;
    t=n*n;
    for(i=1;i<=t;i++)
        {
            tr=0;
            for(j=1;j<=mx;j++)
               {v[j]=v[j]*2+tr;
                tr=v[j]/p;
                v[j]=v[j]%p;
               }

            while (tr)
            {
                v[j++]=tr;
                tr=v[j]/p;
                v[j]%=p;
            }
            j--;
            if (j>mx) mx=j;

        }

        for(i=2;i<=n;i++)
        {
            tr=0;
            for(j=1;j<=mx;j++)
               {v[j]=v[j]*i+tr;
                tr=v[j]/p;
                v[j]=v[j]%p;
               }

            while (tr)
            {
                v[j++]=tr;
                tr=v[j]/p;
                v[j]%=p;
            }
            j--;
            if (j>mx) mx=j;

        }
        g<<v[mx];
    for(i=mx-1;i>=1;i--)
        g<<setw(3)<<setfill('0')<<v[i];

    return 0;
}
/*
#include <fstream>

using namespace std;
ifstream f("patrate2.in");
ofstream g("patrate2.out");
int factorial(int n) {
    int temp;

    if(n <= 1) return 1;

    temp = n * factorial(n-1);
    return temp;
}
int i=1;
int main()
{   long long nf;
    int n,t;
    f>>n;
    t=n*n;
    if(n==1) nf=2;
        else nf=factorial(n)*(1LL<<t);
    g<<nf;
    return 0;
}
*/