Cod sursa(job #518820)

Utilizator ms-ninjacristescu liviu ms-ninja Data 3 ianuarie 2011 11:34:05
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
using namespace std;
int v[3]={2,3,5};
int c[3]={2,3,5};
int a[3],b[3],d[3];
int e[3]={1,1,1};

void solve(int x,int y,int z)
{
	int numar=0;
	while(x>0)
	{
		numar+=x/y;
		x/=y;
	}
	
	d[z]=numar;
}

void solve2(int x,int y,int z)
{
	int numar=0;
	while(x>0)
	{
		numar+=x/y;
		x/=y;
	}
	if(numar!=0)
	e[z]*=numar;
}




int main()
{
	ifstream fin("pascal.in");
	ofstream fout("pascal.out");
	
	int r, q, i,j;
	fin>>r >>q;
	int aux=q;
	int f=0;
	for(i=0;i<=2;++i)
	{
		if(aux%v[i]==0)
		{
			a[f]=v[i];
			while(aux%v[i]==0)
			{
				aux/=v[i];
				++b[i];
			}
			++f;
		}
	}
	--f;			
	
	int nr=0;
	for(i=1;i<=r-1;++i)
	{
		aux=i;
		int gasit=0;
		
		for(j=0;j<=f;++j)
			solve(r,v[j],j);
		
		for(j=0;j<=f;++j)
			solve2(r-i,v[j],j);
		
		for(j=0;j<=f;++j)
			solve2(i,v[j],j);
		
		int ok=0;
		for(j=0;j<=f;++j)
			if(b[j]>d[j]/e[j])
				{
					ok=1;
					break;
			}
		
		if(ok==0)
			++nr;
	}
	
	fout<<nr;
		
		
		
		
		return 0;
	
}