Pagini recente » Profil Arcopie | Cod sursa (job #7989) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2021570)
#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;
}