Cod sursa(job #477942)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 16 august 2010 19:06:05
Problema Pascal Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
int n, x, f[7], d[7];

void desc (int x, int inc)
{
	int i;
	
	while ((x & 1) == 0)
	{
		f[2] += inc;
		x >>= 1;
	}
	for (i = 3; i <= 5; i += 2)
		while (x % i == 0)
		{
			f[i] += inc;
			x /= i;
		}
}

int calc (int k)
{
	desc (n - k, 1);
	desc (k + 1, -1);
	
	for (int i = 2; i <= 5; i ++)
		if (d[i] > f[i])
			return 0;
	return 1;
}

int main ()
{
	freopen ("pascal.in", "r", stdin);
	freopen ("pascal.out", "w", stdout);
	
	scanf ("%d %d", &n, &x);
	
	int i, sol = 0;
	
	for (i = 2; i <= 5; i ++)
		while (x % i == 0)
		{
			d[i] ++;
			x /= i;
		}
	for (i = 0; i <= (n + 1) / 2 - 2; i ++)
		sol += calc (i);
	
	sol = sol * 2;
	if (n % 2 == 0)
		sol += calc (i);
	
	printf ("%d\n", sol);
	
	return 0;
}