Cod sursa(job #360440)

Utilizator funkydvdIancu David Traian funkydvd Data 31 octombrie 2009 15:32:18
Problema Pascal Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
using namespace std;
ifstream f1 ("pascal.in");
ofstream f2 ("pascal.out");
int fact[5000001],fact2[5000001];
int ndiv(int k, int d)
{
	int s=0;
	while (k%d==0) {k/=d; s++;}
	return s;
}
int main()
{
	int r,d,i,g=0,sol=0;
	f1>>r>>d;
	if (d==4) {d=2; g=1;}
	if (d!=6)
	{
		for (i=2; i<=r; i++) fact[i]=fact[i-1]+ndiv(i,d);
    }
	else 
	{
		for (i=2; i<=r; i++) fact[i]=fact[i-1]+ndiv(i,2);
		for (i=2; i<=r; i++) fact2[i]=fact2[i-1]+ndiv(i,3);
	}
	//for (i=0; i<=r; i++) f2<<fact[r]-fact[r-i]-fact[i]<<" "<<fact2[r]-fact2[r-i]-fact2[i]<<endl;
	if (d!=6)
		for (i=1; i<=r; i++) 
			{if (g==0) if(fact[r]-fact[r-i]-fact[i]>0) sol++;
			 if (g==1) if(fact[r]-fact[r-i]-fact[i]>1) sol++;
			else ;}
	else 
		for (i=1; i<=r; i++)
			if (fact[r]-fact[r-i]-fact[i]>0 && fact2[r]-fact2[r-i]-fact2[i]>0) sol++;
	f2<<sol;
	return 0;
}