Cod sursa(job #228646)

Utilizator AthanaricCirith Gorgor Athanaric Data 7 decembrie 2008 18:03:19
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
#include <math.h>
#define Size 5000000
int n,d,fact[2],expo[2],nr,expon[Size][1];
void Read()
{
	scanf("%d",&n);
	scanf("%d",&d);
}
void Decompose()
{
	if (d==2||d==3||d==5)
	{
		nr=1;
		fact[1]=d;
		expo[1]=1;
	}
	if (d==4)
	{
		nr=1;
		fact[1]=2;
		expo[1]=2;
	}
	if (d==6)
	{
		nr=2;
		fact[1]=2; fact[2]=3;
		expo[1]=1; expo[2]=1;
	}
}
int Solve()
{
	Decompose();
	int count=0;	
	for (int q=0; q<=n; q++)
		for (int i=1; i<=nr; i++)
			for (int aux=1; aux<q; aux*=fact[i],expon[q][i-1]+=q/aux);
	for (int i=1; i<=nr; i++)
		if (expon[n][i-1]<expo[i])
			return 0;
	for (int q=0; q<=n; q++)
	{
		int ok=1;
		for (int i=1; i<=nr; i++)
			if (expon[n][i-1]<=expon[n-q][i-1]+expon[q][i-1])
				ok=0;
		if (ok)
			count++;
	}
	return count;
}
int main()
{
	freopen("pascal.in","r",stdin);
	freopen("pascal.out","w",stdout);
	Read();
	printf("%d ",Solve());
}