Cod sursa(job #1505653)

Utilizator Julian.FMI Caluian Iulian Julian. Data 19 octombrie 2015 17:00:27
Problema Patrate2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#define nmax 4001
using namespace std;
ifstream fin("patrate2.in");
ofstream fout("patrate2.out");

struct nrmare
{
    int nr;
    char s[nmax];
};

void init(nrmare &a,int x)
{int i;
for(i=0;i<nmax;i++)a.s[i]=0;
    a.nr=0;
do{
    a.nr++;
    a.s[a.nr-1]=x%10;
    x=x/10;
}while(x);

}

void afisare(nrmare a)
{int i;
    for(i=a.nr-1;i>=0;i--)
        fout<<int(a.s[i]);
}

void inmultire(nrmare &a,nrmare b)
{int i,j,t,val;
nrmare p;
init(p,0);
for(i=0;i<a.nr;i++)
   {for(t=j=0;j<b.nr;j++)
    {val=p.s[i+j]+t+a.s[i]*b.s[j];
     p.s[i+j]=val%10;
     t=val/10;}
    if(t)p.s[i+j]=t;
    }
p.nr=a.nr+b.nr-1;
if(p.s[p.nr])p.nr++;
a.nr=p.nr;
for(i=0;i<p.nr;i++)a.s[i]=p.s[i];

}




int main()
{int n,i;
    fin>>n;
    nrmare a,b,c,d;
    init(a,1);

    for(i=1;i<=n;i++)
        {init(b,i); inmultire(a,b);}

    init(b,2);
    for(i=1;i<=n*n;i++)
        inmultire(a,b);

    afisare(a);

}