Cod sursa(job #767881)

Utilizator Andrei.XweCobzaru Adrian-Andrei Andrei.Xwe Data 15 iulie 2012 10:53:08
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include<fstream>
using namespace std;
int putere(int n,int f)
{
	int rez=0;
	for(int c=f;f<=n;f*=c)
		rez+=n/f;
	return rez;
}	
int main()
{
	ifstream fcin("pascal.in");
	ofstream fcout("pascal.out");
	int r,d,i,j,nr=0,p,pt,p2=-1,pt2;
	fcin>>r>>d;
	if(d==4)
		p=putere(r,2);
	else
		if(d==6)
			p=putere(r,2),p2=putere(r,3);
		else
			p=putere(r,d);
	for(i=2;i<=r/2;i++)
	{
		pt=p;
		pt2=p2;
		if(d==4)
			pt=pt-putere(r-i,2)-putere(i,2);
		else
			if(d==6)
				pt=pt-putere(r-i,2)-putere(i,2),pt2=pt2-putere(r-i,3)-putere(i,3);
			else
				pt=pt-putere(r-i,d)-putere(i,d);
		if(d==4)
		{	
			if(pt>1)
				nr+=2;
		}
		else
			if(d==6)
			{
				if(pt>0 && pt2>0)
					nr+=2;
			}
			else
				if(pt>0)
					nr+=2;
	}
	if(r%2==0)
	{
		pt=p;
		pt2=p2;
		if(d==4)
			pt=pt-putere(r-i,2)-putere(i,2);
		else
			if(d==6)
				pt=pt-putere(r-i,2)-putere(i,2),pt2=pt2-putere(r-i,3)-putere(i,3);
			else
				pt=pt-putere(r-i,d)-putere(i,d);
		if(d==4)
		{	
			if(pt>1)
				nr++;
		}
		else
			if(d==6)
			{
				if(pt>0 && pt2>0)
					nr++;
			}
			else
				if(pt>0)
					nr++;
	}	
	fcout<<nr;
	return 0;
}