Cod sursa(job #981616)

Utilizator t.g.g.tt.g.g.t t.g.g.t Data 7 august 2013 17:01:29
Problema Patrate2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.13 kb
#include <fstream>

using namespace std;

int n,r,l;

long long pr1[25],pr2[350],pr3[400];

int main ()
{
    ifstream in ("patrate2.in");
    in>>n;
    in.close();
    pr1[0]=1; pr1[1]=1; pr2[0]=1; pr2[1]=1;
    for (int i=1;i<=n;++i)
    {
        for (int j=1;j<=pr1[0];++j)
        {
            pr1[j]=pr1[j]*i+r;
            r=0;
            if (pr1[j]>999999999)
            {
                r=pr1[j]/1000000000;
                pr1[j]=pr1[j]%1000000000;
            }
        }
        l=pr1[0];
        while (r>0) { ++l; pr1[l]=r; r=0; if (pr1[l]>999999999) { r=pr1[l]/1000000000; pr1[l]=pr1[l]%1000000000; } }
        if (l>pr1[0]) pr1[0]=l;
    }
    for (int i=1;i<=(n*n);++i)
    {
        for (int j=1;j<=pr2[0];++j)
        {
            pr2[j]=pr2[j]*2+r;
            r=0;
            if (pr2[j]>999999999)
            {
                r=pr2[j]/1000000000;
                pr2[j]=pr2[j]%1000000000;
            }
        }
        l=pr2[0];
        while (r>0) { ++l; pr2[l]=r; r=0; if (pr2[l]>999999999) { r=pr2[l]/1000000000; pr2[l]=pr2[l]%1000000000; } }
        if (pr2[0]<l) pr2[0]=l;
    }
    for (int i=1;i<=pr1[0];++i)
    {
        for (int j=1;j<=pr2[0];++j)
        {
            pr3[i+j-1]=pr3[i+j-1]+(pr1[i]*pr2[j])+r;
            r=0;
            if (pr3[i+j-1]>999999999) { r=pr3[i+j-1]/1000000000; pr3[i+j-1]%=1000000000; }
        }
        l=i+pr2[0]-1;
        while (r>0) { ++l; pr3[l]=pr3[l]+r; r=0; if (pr3[l]>999999999) { r=pr3[l]/1000000000; pr3[l]%=1000000000; } }
        if (pr3[0]<l) pr3[0]=l;
    }
    ofstream out ("patrate2.out");
    out<<pr3[pr3[0]];
    for (int i=pr3[0]-1;i>=1;--i)
    {
        if (pr3[i]>99999999) out<<pr3[i];
        else if (pr3[i]>9999999) out<<"0"<<pr3[i];
        else if (pr3[i]>999999) out<<"00"<<pr3[i];
        else if (pr3[i]>99999) out<<"000"<<pr3[i];
        else if (pr3[i]>9999) out<<"0000"<<pr3[i];
        else if (pr3[i]>999) out<<"00000"<<pr3[i];
        else if (pr3[i]>99) out<<"000000"<<pr3[i];
        else if (pr3[i]>9) out<<"0000000"<<pr3[i];
        else out<<"00000000"<<pr3[i];
    }
    out.close();

}