Cod sursa(job #485843)

Utilizator DuxarFII-Stefan-Negrus Duxar Data 19 septembrie 2010 18:07:05
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>

using namespace std;

struct rec
{
	int p2,p3;
} a[5000002];

int r,d;
int p2d,p3d,nr;

ifstream f("pascal.in");
ofstream g("pascal.out");

void factr();
void factd();
void num();

int main()
{
	f>>r>>d;
	
	factr();
	factd();
	
	num();
	
	g<<nr;
	
	f.close();
	g.close();
}

void num()
{
	int pp2,pp3,mij=r/2,k;
	for (k=1;k<=mij;++k)
	{
		pp2=a[k].p2+a[r-k].p2;
		pp3=a[k].p3+a[r-k].p3;
		
		if (pp2>=p2d&&pp3>=p3d) ++nr;
	
	}
	nr*=2;
	if (r%2==0) nr--;
}

void factd()
{
	while (d%2==0)
	{
		++p2d;
		d/=2;
	}
	while (d%3==0)
	{
		++p3d;
		d/=3;
	}
}

void factr()
{
	int i,x;
	for (i=2;i<=r;++i)
	{
		a[i].p2=a[i-1].p2;
		a[i].p3=a[i-1].p3;
		x=i;
		while (x%2==0)
		{
			++a[i].p2;
			x/=2;
		}
		while (x%3==0)
		{
			++a[i].p3;
			x/=3;
		}
	}
}