Pagini recente » Cod sursa (job #2743946) | HLO 2023 - Cls 11-12 - Tema 0 | Cod sursa (job #1525640) | Cod sursa (job #870930) | Cod sursa (job #2021550)
#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;
}