Cod sursa(job #505108)

Utilizator matei_cChristescu Matei matei_c Data 30 noiembrie 2010 19:40:44
Problema Pascal Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
long long fact(long long k,long long lim)
{
	long long i,p=1;
	if(lim==1)
		return 1;
	for(i=k;i<=lim;i++)
		p*=i;
	return p;
}
long long pascal(long long r,long long i)
{
	if(r-i>i)
		return fact(r-i+1,r) /  fact(2,i) ;
	else
		return fact(i+1,r) / fact(2,r-i) ;
}

long long R,nr,n;
int D;
int main()
{
	int i,lim;
	freopen("pascal.in","r",stdin);
	freopen("pascal.out","w",stdout);
	scanf("%lld%d",&R,&D);
	if(R==0 || R==1)
	{	
		printf("0\n");
		return 0;
	}	
	if(R%2==1)
		lim=R/2;
	else
	{	
		lim=R/2;
		nr--;
	}	
	for(i=1;i<=lim;i++)
	{
		n= pascal( R , i );
		if( n % D == 0 )
			nr+=2;
	}	
	printf("%lld\n",nr);
	return 0;
}