Cod sursa(job #1837342)

Utilizator ciprianprohozescuProhozescu Ciprian ciprianprohozescu Data 29 decembrie 2016 15:43:50
Problema Patrate2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
#define DMAX 100000

using namespace std;

typedef int NrMare[DMAX];

ifstream fin("patrate2.in");
ofstream fout("patrate2.out");

int n, lg;
NrMare x;

void produsc(NrMare a, int lga, int b, NrMare c, int& lgc);
bool is0(NrMare x, int lgx);
void afisare(NrMare x, int& lgx);

int main()
{
    int i;
    fin >> n;
    x[0] = 1;
    lg = 1;
    for (i = 2; i <= n; i++)
        produsc(x, lg, i, x, lg);
    n *= n;
    for (i = 1; i <= n; i++)
        produsc(x, lg, 2, x, lg);
    afisare(x, lg);
    fout << '\n';
    fout.close();
    return 0;
}

void produsc(NrMare a, int lga, int b, NrMare c, int& lgc)
{
    int t = 0, i, aux;
    if (is0(a, lga) || !b)
    {
        lgc = 1;
        c[0] = 0;
        return ;
    }
    lgc = lga;
    for (i = 0; i < lgc; i++)
    {
        aux = a[i] * b + t;
        t = aux / 10;
        c[i] = aux % 10;
    }
    while (t)
    {
        c[lgc++] = t % 10;
        t /= 10;
    }
}
bool is0(NrMare x, int lgx)
{
    return lgx == 1 && !x[0];
}
void afisare(NrMare x, int& lgx)
{
    int i;
    for (i = lgx - 1; i >= 0; i--)
        fout << x[i];
}