Cod sursa(job #505278)

Utilizator KoniacDocea Andrei Koniac Data 1 decembrie 2010 12:55:35
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>

FILE * f = fopen("pascal.in","r");
FILE * g = fopen("pascal.out","w");

int r2,r3,r5,nr,i,r,d;
int v2[5000005],v3[5000005],v5[5000005];

int func(int a,int b){
	int div=0;
	while(a%b==0){
		a/=b;
		div++;
	}
	return div;
}

int main(){
	fscanf(f,"%d%d",&r,&d);
	for(i=1;i<=r+1;i++){
		v2[i]=v2[i-1]+func(i,2);
		v3[i]=v3[i-1]+func(i,3);
		v5[i]=v5[i-1]+func(i,5);
	}
	r3=r2=r5=0;
	if(d==2)
		r2=1;
	else
		if(d==3)
			r3=1;
		else
			if(d==4)
				r2=2;
			else
				if(d==5)
					r5=1;
				else
					r2=r3=1;
	for(i=1;i<((r+1)/2);i++){
		if(v2[r]-v2[r-i]-v2[i]>=r2&&v3[r]-v3[r-i]-v3[i]>=r3&&v5[r]-v5[r-i]-v5[i]>=r5)
			nr++;
	}
	nr*=2;
	if(r%2==0)
		if(v2[r]-v2[r-i]-v2[i]>=r2&&v3[r]-v3[r-i]-v3[i]>=r3&&v5[r]-v5[r-i]-v5[i]>=r5)
			nr++;
	fprintf(g,"%d",nr);
	fclose(f);
	fclose(g);
	
	return 0;
}