Cod sursa(job #493000)

Utilizator ooctavTuchila Octavian ooctav Data 16 octombrie 2010 17:36:58
Problema Patrate2 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<cstdio>
#include<iostream>
using namespace std;

const int NMAX = 105;
const int SIRMAX = 1000005;
const int BAZA = 10000;
int N;
int REZ[SIRMAX];

void citire()
{
	cin >> N;
}

void inm(long long x)
{
	int i;
	long long t = 0;
	for(i = 1 ; i <= REZ[0] || t ; i++, t /= BAZA)
		REZ[i] = (t += x * REZ[i]) % BAZA;
	REZ[0] = i - 1;
}

/*void aduna(int A[], int B[])
{
	int t = 0;
	for(int i = 1 ; i <= A[0] || i <= B[0] || t ; i++, t /= BAZA)
		REZ[0] = (t += B[0] + A[0]) % BAZA;
	
	while(REZ[REZ[0] + 1])
		REZ[1]++;
}*/

void construi()
{
	REZ[0] = 1; REZ[1] = 1;
	for(int i = 1 ; i <= N * N ; i++)
		inm(2);
	for(int i = 1 ; i <= N ; i++)
		inm(i);
}

void scrie()
{
	int i = REZ[0];
	printf("%d", REZ[i]);
	for(i = REZ[0] - 1 ; i ; i--)
		printf("%04d", REZ[i]);
}

int main()
{
	freopen("patrate2.in", "r", stdin);
	freopen("patrate2.out", "w", stdout);
	citire();
	construi();
	scrie();
	return 0;
}