Cod sursa(job #640595)

Utilizator sebii_cSebastian Claici sebii_c Data 26 noiembrie 2011 00:57:53
Problema Pascal Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>

int v[4], fac[6];
int r, d, n1, n2;

void factor()
{
	while (!(n1 & 1)) 
		++fac[2], n1 >>= 1;
	while (!(n1 % 3)) 
		++fac[3], n1 /= 3;
	while (!(n1 % 5))
		++fac[5], n1 /= 5;
	while (!(n2 & 1)) 
		--fac[2], n2 >>= 1;
	while (!(n2 % 3)) 
		--fac[3], n2 /= 3;
	while (!(n2 % 5))
		--fac[5], n2 /= 5;
}

int div()
{
	if (d == 4)
		return (fac[2] > 1);
	if (d == 6)
		return (fac[3] && fac[2]);
	return fac[d];
}

int main()
{
	freopen("pascal.in", "r", stdin);
	freopen("pascal.out", "w", stdout);
	int i, n, num = 0;
	scanf("%d %d", &r, &d);
	n = r;
	for (i = 1; i <= r/2; ++i, --n) {
		n1 = n, n2 = i;
		factor();
		if (div())
			num += 2;
	}
	if (div() && !(r % 2))
		--num;
	printf("%d\n", num);
	return 0;
}