Cod sursa(job #451083)

Utilizator crushackPopescu Silviu crushack Data 8 mai 2010 22:32:15
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>

int a[7];

int main()
{
	int n,d,i,j,k,nd,m,c;
	freopen("pascal.in","r",stdin);
	freopen("pascal.out","w",stdout);
	
	scanf("%d%d",&n,&d);
	nd=0;
	
	k=n;m=n/2;c=0;
	for (i=0;i<m;i++)
	{
		int ax=k;
		while (!(ax%2))
		{
			ax/=2;
			a[2]++;
		}
		while (!(ax%3))
		{
			ax/=3;
			a[3]++;
		}
		while (!(ax%5))
		{
			ax/=5;
			a[5]++;
		}
		ax=n-k+1;
		while (!(ax%2))
		{
			ax/=2;
			a[2]--;
		}
		while (!(ax%3))
		{
			ax/=3;
			a[3]--;
		}
		while (!(ax%5))
		{
			ax/=5;
			a[5]--;
		}
		
		if (d==2 || d==3 || d==5)
		{
			if (a[d])
				c++,nd=1;
			else
				nd=0;
		}
		else if (d==4)
		{
			if (a[2]/2)
				c++,nd=1;
			else
				nd=0;
		}
		else
		{
			if (a[2] && a[3])
				c++,nd=1;
			else
				nd=0;
		}
		k--;
	}
	if ( !(n%2) )
	{
		c= (nd) ?(c-1)*2 +1 : c*2;
	}
	else
	{
		c*=2;
	}
	printf("%d\n",c);
	return 0;
}