Cod sursa(job #797470)

Utilizator dariusdariusMarian Darius dariusdarius Data 14 octombrie 2012 09:07:37
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
int p2n[5000005];
int p3n[5000005];
int p5n[5000005];
int main()
{
	freopen("pascal.in","r",stdin);
	freopen("pascal.out","w",stdout);
	int r,d,i,a,b,t2,t3,t5,nr;
	scanf("%d%d",&r,&d);
	for(i=1;i<=r;i++)
	{
		if(i%2==0) p2n[i]=p2n[i/2]+1;
		else       p2n[i]=0;
		
		if(i%3==0) p3n[i]=p3n[i/3]+1;
		else       p3n[i]=0;
		
		if(i%5==0) p5n[i]=p5n[i/5]+1;
		else       p5n[i]=0;
	}
	t2=0;t3=0;t5=0;nr=0;
	for(i=1;i<=r;i++)
	{
		a=i;b=r+1-i;
		t2=t2+p2n[b]-p2n[a];
		t3=t3+p3n[b]-p3n[a];
		t5=t5+p5n[b]-p5n[a];
		
		switch(d)
		{
		case 2: {if(t2>0) nr++; break;}
		case 3: {if(t3>0) nr++; break;}
		case 4: {if(t2>1) nr++; break;}
		case 5: {if(t5>0) nr++; break;}
		case 6: {if(t2>0 && t3>0) nr++; break;}
		}
	}
	printf("%d\n",nr);
	return 0;
}