Pagini recente » Cod sursa (job #2594164) | Cod sursa (job #3206141) | Cod sursa (job #3261616) | Cod sursa (job #578681) | Cod sursa (job #1217214)
#include<stdio.h>
#include<math.h>
const int RMAX = 5e6;
int r, d;
inline int mult (int k, int n) {
int res = 0;
while(n % k == 0)
++ res,
n /= k;
return res;
}
int min2, min3, min5, p2[RMAX + 5], p3[RMAX + 5], p5[RMAX + 5];
inline int check (int k) {
return p2[r] - p2[r - k] - p2[k] >= min2 && p3[r] - p3[r - k] - p3[k] >= min3 && p5[r] - p5[r - k] - p5[k] >= min5;
}
int main() {
freopen("pascal.in", "r", stdin);
freopen("pascal.out", "w", stdout);
int j, jum, num;
scanf("%d%d", &r, &d);
jum = r / 2;
min2 = min3 = min5 =0;
if(d == 2)
min2 = 1;
if(d == 3)
min3 = 1;
if(d == 4)
min2 = 2;
if(d == 5)
min5 = 1;
if(d == 6)
min2 = min3 = 1;
for(j = 2; j <= r; ++ j) {
p2[j] = p2[j - 1] + mult(2, j),
p3[j] = p3[j - 1] + mult(3, j),
p5[j] = p5[j - 1] + mult(5, j);
// fprintf(stderr, "%d %d %d\n", p2[j], p3[j], p5[j]);
}
num = 0;
for(j = 1; j <= jum; ++ j)
if(check(j))
num += 2;
if(r % 2 == 0)
num -= check(jum);
printf("%d\n", num);
return 0;
}