Cod sursa(job #798708)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 16 octombrie 2012 23:33:29
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.39 kb
#include <fstream>

using namespace std;

short d,c2[5000005],c3[5000005],c5[5000005];
int n,i; 

int main()
{
	ifstream fin("pascal.in");
    ofstream fout("pascal.out");
	
	fin>>n;
	fin>>d;
	////////////
	for(i=1;(i<=5000004 && i*2<=5000004);i++)
	{
		if(i%2==0)
		{
			if(c2[i]==0)
			{
				c2[i]=1;
				c2[2*d]=2;
			}
			else
			{
			   c2[2*d]=c2[i]+1;	
			}
		}
		else
		{
			c2[2*d]=1;
		}
	}
	
	
	////////////
	for(i=1;(i<=5000004 && i*3<=5000004);i++)
	{
		if(i%3==0)
		{
			if(c3[i]==0)
			{
				c3[i]=1;
				c3[3*d]=2;
			}
			else
			{
			   c3[3*d]=c3[i]+1;	
			}
		}
		else
		{
			c3[3*d]=1;
		}
	}
	
	////////////
	for(i=1;(i<=5000004 && i*5<=5000004);i++)
	{
		if(i%5==0)
		{
			if(c5[i]==0)
			{
				c5[i]=1;
				c5[5*d]=2;
			}
			else
			{
			   c5[5*d]=c5[i]+1;	
			}
		}
		else
		{
			c5[5*d]=1;
		}
	}
	if(d==2){
	int nr_factori=0,raspuns=0;
		for(i=0;(i<n-1);i++)
		{
			nr_factori=nr_factori+c2[n-i]-c2[i+1];
			if(nr_factori>0)
			{
				raspuns++;
			}
			//numar=numar*(n-i)/(i+1);
			//cout<<numar<<' '<<nr_factori<<endl;;
		}
		fout<<raspuns<<'\n';
	}
	else if(d==3)
	{
	int nr_factori=0,raspuns=0;
		for(i=0;(i<n-1);i++)
		{
			nr_factori=nr_factori+c3[n-i]-c3[i+1];
			if(nr_factori>0)
			{
				raspuns++;
			}
			//numar=numar*(n-i)/(i+1);
			//cout<<numar<<' '<<nr_factori<<endl;;
		}
		fout<<raspuns<<'\n';	
	}
	else if(d==5)
	{
		int nr_factori=0,raspuns=0;
		for(i=0;(i<n-1);i++)
		{
			nr_factori=nr_factori+c3[n-i]-c3[i+1];
			if(nr_factori>0)
			{
				raspuns++;
			}
			//numar=numar*(n-i)/(i+1);
			//cout<<numar<<' '<<nr_factori<<endl;;
		}
		fout<<raspuns<<'\n';
	}
	else if(d==4)
	{
		int nr_factori=0,raspuns=0;
		for(i=0;(i<n-1);i++)
		{
			nr_factori=nr_factori+(c2[n-i]-c2[i+1])/2+(c2[n-i]-c2[i+1])%2;
			if(nr_factori>0)
			{
				raspuns++;
			}
			//numar=numar*(n-i)/(i+1);
			//cout<<numar<<' '<<nr_factori<<endl;;
		}
		fout<<raspuns<<'\n';
	}
	else if(d==6)
	{
	   	int nr_factori=0,raspuns=0;
		for(i=0;(i<n-1);i++)
		{
			nr_factori=nr_factori+(c2[n-i]-c2[i+1])/2+(c2[n-i]-c2[i+1])%2+(c3[n-i]-c3[i+1])/2+(c3[n-i]-c3[i+1])%2;
			if(nr_factori>0)
			{
				raspuns++;
			}
			//numar=numar*(n-i)/(i+1);
			//cout<<numar<<' '<<nr_factori<<endl;;
		}
		fout<<raspuns<<'\n';
	}
	fin.close();
	fout.close();
		//system("PAUSE");
	return 0;
}