Cod sursa(job #2021570)

Utilizator mihai.alphamihai craciun mihai.alpha Data 13 septembrie 2017 22:37:45
Problema Pascal Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>

FILE *fin, *fout;

int r, d;

inline int get(int f, int n) {
	int ans = 0;
	while (n > 0 && n % f == 0)
		ans++, n /= f;
	return ans;
}

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