Pagini recente » Cod sursa (job #1289939) | Cod sursa (job #784795) | Cod sursa (job #2761749) | Cod sursa (job #2754958) | Cod sursa (job #1217249)
#include<stdio.h>
#include<math.h>
const int RMAX = 5e6;
int r, d;
int min2, min3, min5;
short int p2[RMAX + 5], p3[RMAX + 5], p5[RMAX + 5];
char xp2[2500010], xp3[2000000], xp5[1000005];
int main() {
freopen("pascal.in", "r", stdin);
freopen("pascal.out", "w", stdout);
int j, jum, num, d2, d3, d5;
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) {
if((j & 1) == 0) {
p2[j] = p2[j - 1] + xp2[j / 2] + 1;
if(j < 2500001)
xp2[j] = xp2[j / 2] + 1;
}
else
p2[j] = p2[j - 1];
if(j % 3 == 0) {
p3[j] = p3[j - 1] + xp3[j / 3] + 1;
if(j < 1700000)
xp3[j] = xp3[j / 3] + 1;
}
else
p3[j] = p3[j - 1];
if(j % 5 == 0) {
p5[j] = p5[j - 1] + xp5[j / 5] + 1;
if(j < 1000001)
xp5[j] = xp5[j / 5] + 1;
}
else
p5[j] = p5[j - 1];
}
num = 0;
for(j = 1; j <= jum; ++ j)
if(p2[r] - p2[r - j] - p2[j] >= min2 && p3[r] - p3[r- j] - p3[j] >= min3 && p5[r] - p5[r - j] - p5[j] >= min5)
num += 2;
if(r % 2 == 0 && p2[r] - 2 * p2[jum] >= min2 && p3[r] - 2 * p3[jum] >= min3 && p5[r] - 2 * p5[jum] >= min5)
num -= 1;
printf("%d\n", num);
return 0;
}