Cod sursa(job #518846)

Utilizator ms-ninjacristescu liviu ms-ninja Data 3 ianuarie 2011 12:34:18
Problema Pascal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 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 check(int mum)
{
	
		if(mum==2)
		{a[0]=2;++b[0];}
		else
			if(mum==3)
			{a[1]=3;++b[1];}
			else
				if(mum==4)
				{a[1]=2;b[0]+=2;}
				else
					if(mum==5)
					{a[2]=5;++b[2];}
					else
						{a[0]=2;a[1]=3;++b[0];++b[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;
	
	
	check(q);
	
	int nr=0;
	for(i=1;i<=r-1;++i)
	{
		
		for(j=0;j<=2;++j)
			if(a[j]!=0)
				solve(r,v[j],j);
		
		for(j=0;j<=2;++j)
			if(a[j]!=0)
				solve2(r-i,v[j],j);
		
		for(j=0;j<=2;++j)
			if(a[j]!=0)
				solve2(i,v[j],j);
		
		int ok=0;
		
		for(j=0;j<=2;++j)
			if(a[j]!=0)
				if(b[j]>d[j]/e[j])
					{ok=1;break;}
		
		for(j=0;j<=2;++j)
		{
			d[j]=0;	
			e[j]=1;
		}
			
		if(ok==0)
			++nr;
	}
	
	fout<<nr;
		
		
		
		
		return 0;
	
}