Cod sursa(job #548090)

Utilizator mihai995mihai995 mihai995 Data 7 martie 2011 08:53:18
Problema Pascal Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
using namespace std;

int n,d,nr;

ifstream in("pascal.in");
ofstream out("pascal.out");

int fact(int n,int x)
{
	int nr=0;
	while (n)
	{
		nr+=n/x;
		n/=x;
	}
	return nr;
}

int f2()
{
	int i;
	for (i=0;i<n/2;i++)
		nr+=2*(fact(n,2)-fact(i,2)-fact(n-i,2)>0);
	if (n%2==0)
		nr+=(fact(n,2)-fact(i,2)-fact(n-i,2)>0);
	return nr;
}

int f3()
{
	int i;
	for (i=0;i<n/2;i++)
		nr+=2*(fact(n,3)-fact(i,3)-fact(n-i,3)>0);
	if (n%2==0)
		nr+=(fact(n,3)-fact(i,3)-fact(n-i,3)>0);
	return nr;
}


int f4()
{
	int i;
	for (i=0;i<n/2;i++)
		nr+=2*(fact(n,2)-fact(i,2)-fact(n-i,2)>1);
	if (n%2==0)
		nr+=(fact(n,2)-fact(i,2)-fact(n-i,2)>1);
	return nr;
}


int f5()
{
	int i;
	for (i=0;i<n/2;i++)
		nr+=2*(fact(n,5)-fact(i,5)-fact(n-i,5)>0);
	if (n%2==0)
		nr+=(fact(n,5)-fact(i,5)-fact(n-i,5)>0);
	return nr;
}


int f6()
{
	int i;
	for (i=0;i<n/2;i++)
		nr+=2*(fact(n,2)-fact(i,2)-fact(n-i,2)>0 && fact(n,3)-fact(i,3)-fact(n-i,3)>0);
	if (n%2==0)
		nr+=(fact(n,2)-fact(i,2)-fact(n-i,2)>0 && fact(n,3)-fact(i,3)-fact(n-i,3)>0);
	return nr;
}

int etc()
{
	if (d==2)
		return f2();
	if (d==3)
		return f3();
	if (d==4)
		return f4();
	if (d==5)
		return f5();
	return f6();
}

int main()
{
	in>>n>>d;
	out<<etc()<<"\n";
	return 0;
}