Cod sursa(job #445473)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 23 aprilie 2010 20:47:41
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>

#define file_in "pascal.in"
#define file_out "pascal.out"

int n,d,i,p[10],sol,x;

void citire()
{
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d", &n,&d);
}

void pascal()
{
	x=n-i;
	while(x%2==0)
	{
		x/=2;
		p[2]++;
	}
	while(x%3==0)
	{
		x/=3;
		p[3]++;
	}
	while(x%5==0)
	{
		x/=5;
		p[5]++;
	}
	x=i+1;
	while(x%2==0)
	{
		x/=2;
		p[2]--;
	}
	while(x%3==0)
	{
		x/=3;
		p[3]--;
	}
	while(x%5==0)
	{
		x/=5;
		p[5]--;
	}
	
	if (d==2)
	{
		if (p[2]>=1)
			sol++;
	}
	if (d==3)
	{
		if (p[3]>=1)
			sol++;
	}
	if (d==4)
	{
		if (p[2]>=2)
			sol++;
	}
	if (d==5)
	{
		if (p[5]>=1)
			sol++;
	}
	if (d==6)
	{
		if (p[2]>=1 &&p[3]>=1)
			sol++;
	}
}


void solve()
{
	for (i=0;i<=(n-3)/2;++i)
		 pascal();
	sol<<=1;
	if (n%2==0) sol++;
	printf("%d", sol);
}

int main()
{
	citire();
	solve();
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
	
}