Cod sursa(job #548158)

Utilizator ioanabIoana Bica ioanab Data 7 martie 2011 09:37:52
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <cstdio>

int calc(int x,int p)
{
	int nr=0;
	while(x%p==0)
	{
		nr++;
		x=x/p;
	}
	return nr;
}
int main()
{
	freopen("pascal.in","r",stdin);
	freopen("pascal.out","w",stdout);
	int i,r,d,n,nr,nr1,nr2,nrr1,nrr2,nrr3,num=0,nr3;
	scanf("%d%d",&r,&d);
	nr1=0;
	n=r;
	if(d==2 || d==3 || d==5)
	{
		for(i=1;i<(n+1)/2;i++)
		{
			nr2=calc(r-i+1,d);
			nr3=calc(i,d);
			nr1+=nr2-nr3;
			if(nr1>0)
				num++;
		}
		num*=2;
		if((n+1)%2==1)
		{
			nr2=calc(r-n/2+2,d);
			nr3=calc(n/2+1,d);
			nr1+=nr2-nr3;
			if(nr1>0)
				num++;
		}
		printf("%d\n",num);
		return 0;
	}
	if(d==4)
	{
		for(i=1;i<r/2;i++)
		{
			nr2=calc(r-i+1,2);
			nr3=calc(i,2);
			nr1+=nr2-nr3;
			if(nr1>1)
				num++;
		}
		num*=2;
		if(n%2==1)
		{
			nr2=calc(r-n/2+2,2);
			nr3=calc(n/2+1,2);
			nr1+=nr2-nr3;
			if(nr1>1)
				num++;
		}
		printf("%d\n",num);
		return 0;
	}
	nrr1=1;
	if(d==5)
	{
		for(i=1;i<r/2;i++)
		{
			nr2=calc(r-i+1,2);
			nr3=calc(i,2);
			nr1+=nr2-nr3;
			nrr2=calc(r-i+1,3);
			nrr3=calc(i,3);
			nrr1+=nrr2-nrr3;
			if(nr1>0 && nrr1>0)
				num++;
		}
		num*=2;
		if(n%2==1)
		{
			nr2=calc(r-n/2+2,2);
			nr3=calc(n/2+1,2);
			nr1+=nr2-nr3;
			nrr2=calc(r-i+1,3);
			nrr3=calc(i,3);
			nrr1+=nrr2-nrr3;
			if(nr1>0 && nrr1>0)
				num++;
			if(nr1>1)
				num++;
		}
		printf("%d\n",num);
		return 0;
	}
	
	return 0;
}