Pagini recente » Cod sursa (job #2253062) | Cod sursa (job #1050269) | Cod sursa (job #2664937) | Cod sursa (job #1953468) | Cod sursa (job #1825612)
#include <cstdio>
#define RMAX 5000000
using namespace std;
int puteri2[RMAX + 1],puteri3[RMAX + 1],puteri5[RMAX + 1];
int main() {
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
int r,d,i,nr = 0,p,x2,x3,x5;
scanf("%d%d",&r,&d);
for (p=2; p<=r; p*=2)
for (i=p; i<=r; i+=p)
puteri2[i]++;
for (p=3; p<=r; p*=3)
for (i=p; i<=r; i+=p)
puteri3[i]++;
for (p=5; p<=r; p*=5)
for (i=p; i<=r; i+=p)
puteri5[i]++;
x2 = x3 = x5 = 0;
for (i=1; i<r/2; i++) {
x2 += puteri2[r - i + 1] - puteri2[i];
x3 += puteri3[r - i + 1] - puteri3[i];
x5 += puteri5[r - i + 1] - puteri5[i];
switch (d) {
case 2 : nr += (x2 > 0); break;
case 3 : nr += (x3 > 0); break;
case 4 : nr += (x2 > 1); break;
case 5 : nr += (x5 > 0); break;
case 6 : nr += (x2 > 0 && x3 > 0); break;
}
}
nr *= 2;
if (r % 2 == 0) {
x2 += puteri2[r - i + 1] - puteri2[i];
x3 += puteri3[r - i + 1] - puteri3[i];
x5 += puteri5[r - i + 1] - puteri5[i];
switch (d) {
case 2 : nr += (x2 > 0); break;
case 3 : nr += (x3 > 0); break;
case 4 : nr += (x2 > 1); break;
case 5 : nr += (x5 > 0); break;
case 6 : nr += (x2 > 0 && x3 > 0); break;
}
}
printf("%d",nr);
return 0;
}