Cod sursa(job #2229550)

Utilizator CozmaCatalinCozma Catalin CozmaCatalin Data 7 august 2018 12:26:32
Problema Patrate2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string.h>

std::ifstream in("patrate2.in");
std::ofstream out("patrate2.out");

using namespace std;

const int NMAX = 10001;
const int BASE = 10;

char S[NMAX + 1];

typedef int Huge[NMAX + 1];

class BigNumber
{
	public :
		Huge Number;

		void Construct(char S[])
		{
			int lu = strlen(S) - 1;
			Number[0] = lu + 1;
			int NR = 1;
			for (int k = lu; k >= 0; --k)
			{
				Number[NR] = S[k] - '0';
				NR++;
			}
		}

		void Erase0()
		{
			while (Number[0] && !Number[Number[0]]) Number[0]--;
		}

		void Show()
		{
			for (int i = Number[0]; i >= 1; --i)
				cout << Number[i];
		}
};

void Mult(Huge NR1, Huge NR2 , Huge NR3)
{ 
	int T = 0;
	NR3[0] = NR1[0] + NR2[0] - 1;
	for (int i = 1; i <= NR1[0] + NR2[0]; ++i) NR3[i] = 0;

	for (int i = 1; i <= NR1[0]; ++i)
		for (int j = 1; j <= NR2[0]; ++j)
			NR3[i + j - 1] += NR1[i] * NR2[j];
	
	for (int i = 1; i <= NR3[0]; ++i)
	{
		T = (NR3[i] += T) / BASE;
		NR3[i] %= BASE;
	}
	if (T) NR3[++NR3[0]] = T;
}
void Scalar(Huge NR, long long X)
{
	long long T = 0;
	for (int i = 1; i <= NR[0]; ++i)
	{
		NR[i] = NR[i] * X + T;
		T = NR[i] / BASE;
		NR[i] %= BASE;
	}

	while (T)
	{
		NR[++NR[0]] = T % BASE;
		T /= BASE;
	}
}


inline void Init()
{
	int N;
	cin >> N;
	int N2 = N * N;
	BigNumber D1;
	D1.Number[0] = 1;
	D1.Number[1] = 1;
	for (int i = 1; i <= N2; ++i)
		Scalar(D1.Number, 2);
	for (int i = 1; i <= N; ++i)
		Scalar(D1.Number, i);
	D1.Show();
}
int main()
{
	Init();
	getchar();
	cin.get();
}