Cod sursa(job #32067)

Utilizator sima_cotizoSima Cotizo sima_cotizo Data 17 martie 2007 11:39:39
Problema Pascal Scor 50
Compilator c Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
#define FIN "pascal.in"
#define FOUT "pascal.out"

long Nr;
long prim[3] = {2,3,5};
long Exp[][3] = { {0,0,0}, {0,0,0}, {1,0,0}, {0,1,0}, {2,0,0}, {0,0,1}, {1,1,0} };
long P, D;
long numar, ok;
long nr[3], x[3];

inline long f(long x, long y) {
	long ret = 0;
	for (; x>=y; x/=y) 
		ret += x/y;
	return ret;
}

int main() {
	long i,j ;

	freopen(FIN, "r", stdin);
	scanf("%ld %ld", &P, &D);
	fclose(stdin);

	for (j=0; j<3; ++j) 
		x[j] = f(P,prim[j]);
	for (i=0; i<=P/2; ++i) {
		for (j=0, ok=1; j<3 && ok; ++j) {
			nr[j] = x[j] - f(P-i, prim[j]) - f(i, prim[j]);
			if ( nr[j] < Exp[D][j] )
				ok = 0;
		}
		numar += ok;
	}

	freopen(FOUT, "w", stdout);
	printf("%ld\n", numar*2 - (P-1)%2);
	fclose(stdout);
	return 0;
}