Cod sursa(job #570129)

Utilizator rootsroots1 roots Data 2 aprilie 2011 17:23:25
Problema Pascal Scor 100
Compilator cpp Status done
Runda 105 Marime 1.58 kb
#include <stdio.h>

int main()
{
	int i,R,D,sol,x,e2,e3,e5;

	freopen("pascal.in","r",stdin);

	scanf("%d%d",&R,&D);
	
	e2=0;
	e3=0;
	e5=0;
	sol=0;

	if(D==2)
	{
		for(i=1;i<=R/2;i++)
		{
			x=i;
			while(x%2==0)
			{
				e2--;
				x/=2;
			}
			x=R-i+1;
			while(x%2==0)
			{
				e2++;
				x/=2;
			}
			if(e2>0)
			{
				sol+=2;
				if(R%2==0&&i==R/2) sol--;
			}
		}
	}
	else
	if(D==3)
	{
		for(i=1;i<=R/2;i++)
		{
			x=i;
			while(x%3==0)
			{
				e3--;
				x/=3;
			}
			x=R-i+1;
			while(x%3==0)
			{
				e3++;
				x/=3;
			}
			if(e3>0)
			{
				sol+=2;
				if(R%2==0&&i==R/2) sol--;
			}
		}
	}
	else
	if(D==4)
	{
		for(i=1;i<=R/2;i++)
		{
			x=i;
			while(x%2==0)
			{
				e2--;
				x/=2;
			}
			x=R-i+1;
			while(x%2==0)
			{
				e2++;
				x/=2;
			}
			if(e2>1)
			{
				sol+=2;
				if(R%2==0&&i==R/2) sol--;
			}
		}
	}
	else
	if(D==5)
	{
		for(i=1;i<=R/2;i++)
		{
			x=i;
			while(x%5==0)
			{
				e5--;
				x/=5;
			}
			x=R-i+1;
			while(x%5==0)
			{
				e5++;
				x/=5;
			}
			if(e5>0)
			{
				sol+=2;
				if(R%2==0&&i==R/2) sol--;
			}
		}
	}
	else
	if(D==6)
	{
		for(i=1;i<=R/2;i++)
		{
			x=i;
			while(x%2==0)
			{
				e2--;
				x/=2;
			}
			while(x%3==0)
			{
				e3--;
				x/=3;
			}
			x=R-i+1;
			while(x%2==0)
			{
				e2++;
				x/=2;
			}
			while(x%3==0)
			{
				e3++;
				x/=3;
			}
			if(e2>0&&e3>0)
			{
				sol+=2;
				if(R%2==0&&i==R/2) sol--;
			}
		}
	}

	freopen("pascal.out","w",stdout);

	printf("%d\n",sol);

	return 0;
}