Cod sursa(job #504753)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 28 noiembrie 2010 16:34:53
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<stdio.h>
#define DIM 5000005
#include<string>

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

int i,R,D,x,p,pp,XX,NR,ok,fac2[DIM],fac3[DIM],fac5[DIM],p2,p3,p5;

int F(int I,int p){
	int nr = 0;
	while ( I % p == 0 ){
		I /= p;
		++nr;
	}
	return nr;
}

void init () {
	if ( D == 2 ){ p2 = 1; }
	if ( D == 3 ){ p3 = 1; }
	if ( D == 4 ){ p2 = 2; }
	if ( D == 5 ){ p5 = 1; }
	if ( D == 6 ){ p2 = 1; p3 = 1; }	
	
	for ( int i = 1 ; i <= R + 1 ; ++i ){
		fac2[i] = fac2[i-1] + F(i,2);
		fac3[i] = fac3[i-1] + F(i,3);
		fac5[i] = fac5[i-1] + F(i,5);
	}
	
	
}

void solve () {
	
	int z = (R + 1)/ 2 ;
	for ( i = 1 ; i < z; ++i ){
		if ( fac2[R] - fac2[R-i] - fac2[i] >= p2 && fac3[R] - fac3[R-i] - fac3[i] >= p3 && fac5[R] - fac5[R - i] - fac5[i] >= p5 )
			++NR;
		
	}
	NR *= 2;
	if ( !(R % 2) ){
		if ( fac2[R] - fac2[R-i] - fac2[i] >= p2 && fac3[R] - fac3[R-i]- fac3[i] >= p3 && fac5[R] - fac5[R-i] - fac5[i] >= p5 )
			++NR;
	}
	
}


int main () {
	
	fscanf(f,"%d %d",&R,&D);
	
	init();
	solve();
	
	fprintf(g,"%d\n",NR);
	
	fclose(f);
	fclose(g);
	
	return 0;
}