Cod sursa(job #524281)

Utilizator loginLogin Iustin Anca login Data 20 ianuarie 2011 21:06:25
Problema Nunta Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
# include <fstream>
# include <iostream>
# define DIM 300
# define BB 10
using namespace std;
int n, sol[DIM], rez[DIM];

void inm(int A[], int b)
{
     int i, t = 0;
     for (i = 1; i <= A[0] || t; i++, t /= BB)
            A[i] = (t += A[i] * b) % BB;
     A[0] = i - 1;
}

void add(int A[], int B[])
{
      int i, t = 0;
      for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=BB)
              A[i] = (t += A[i] + B[i]) % BB;
      A[0] = i - 1;
}

void calc (int a, int b)
{
	int p=1, j=2, i=a+1;
	rez[0]=rez[1]=1;
	for(;j<=b && i<=a+b;++i)
	{
		p*=i;
		while(j<=b && p%j==0)
			p/=j, ++j;
	}
	inm(rez,p);
	for(;i<=a+b;++i)
		inm(rez, i);
	add(sol, rez);
}

int main ()
{
	ifstream fin ("nunta.in");
	ofstream fout ("nunta.out");
	fin>>n;
	sol[0]=1;sol[1]=0;
	for(int i=0;2*i<=n;++i)
		calc(i, n-2*i);
	for(int i=sol[0];i;--i)
		fout<<sol[i];
	return 0;
}