Cod sursa(job #484989)

Utilizator cristina_ioanaCristina Ioana cristina_ioana Data 16 septembrie 2010 18:03:59
Problema Pascal Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream>
using namespace std;
long long e(int n,int p)// p=nr. prim
{
	int nr=0;
	while(n>0)
	{nr=nr+n/p;
	n=n/p;
	}
	return nr;
}
int ecomb(int n,int k,int p)
{
	int nr;
	nr=e(n,p)-e(k,p)-e(n-k,p);
	return nr;
}

int calcul(int r,int k,int d)
{int x,y;
	if(d==2||d==3||d==5)
	{x=ecomb(r,k,d);
	return x>0;
	}
	else if(d==6)
	{
	 y=ecomb(r,k,3);
	 if(y==0)return 0;
	 x=ecomb(r,k,2);
	 return min(x,y)>0;
	}
	else {x=ecomb(r,k,2);
	      return x>=2;
	     }	
}
int main()
{
	int r,d;
	ifstream f("pascal.in");
	ofstream g("pascal.out");
	f>>r>>d;
	int nr=0;
	int m;
	m=(r-1)/2;
	for(int i=1;i<=m;i++)		
		nr=nr+2*calcul(r,i,d);
	if(r%2==0)nr=nr+calcul(r,(m-1)/2+1,d);
	g<<nr<<'\n';
	
}