Cod sursa(job #2021550)

Utilizator mihai.alphamihai craciun mihai.alpha Data 13 septembrie 2017 22:17:30
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>
#include <vector>

FILE *fin, *fout;

int r, d;

inline int get(int f, int n) {
	int cf = f, ans = 0;
	while (cf <= n) {
		ans += n / cf;
		cf *= f;
	}
	return ans;
}

int main() {
	fin = fopen("pascal.in", "r");
	fout = fopen("pascal.out", "w");
	fscanf(fin, "%d%d", &r, &d);
	int gr2 = get(2, r), gr3 = get(3, r), gr5 = get(5, r), ans = 0;
	for (int j = 0; j <= r; j++) {
		if (d == 2) {
			int pow2 = gr2 - get(2, j) - get(2, r - j);
			if (pow2 > 0)
				ans++;
		}
		else if (d == 3) {
			int pow3 = gr3 - get(3, j) - get(3, r - j);
			if (pow3 > 0)
				ans++;
		}
		else if (d == 4) {
			int pow2 = gr2 - get(2, j) - get(2, r - j);
			if (pow2 > 1)
				ans++;
		}
		else if (d == 5) {
			int pow5 = gr5 - get(5, j) - get(5, r - j);
			if (pow5 > 0)
				ans++;
		}
		else if (d == 6) {
			int pow2 = gr2 - get(2, j) - get(2, r - j);
			int pow3 = gr3 - get(3, j) - get(3, r - j);
			if (pow2 > 0 && pow3 > 0)
				ans++;
		}
	}
	fprintf(fout, "%d", ans);
	fclose(fin);
	fclose(fout);
	return 0;
}