Pagini recente » Cod sursa (job #369809) | Cod sursa (job #2335748) | Cod sursa (job #336079) | Cod sursa (job #2892698) | Cod sursa (job #1825645)
#include <cstdio>
using namespace std;
short int nr1[5000000];
short int nr2[5000000];
short int nr3[5000000];
int main()
{ freopen("pascal.in", "r",stdin);
freopen("pascal.out", "w",stdout);
int r,d,i,j,x2,x3,x5,nr;
scanf("%d%d", &r, &d);
if(d%2==0){
for(i=1; i*2<=r; i*=2){
for(j=i*2; j<=r; j+=i*2)
nr1[j]++;
}
}
if(d%3==0){
for(i=1; i*3<=r; i*=3){
for(j=i*3; j<=r; j+=i*3)
nr2[j]++;
}
}
if(d%5==0){
for(i=5; i*5<=r; i*=5){
for(j=i*5; j<=r; j+=i*5)
nr3[j]++;
}
}
for(i=1; i<(r+1)/2; i++){
x2+=nr1[r-i+1]-nr1[i];
x3+=nr2[r-i+1]-nr2[i];
x5+=nr3[r-i+1]-nr3[i];
switch(d){
case 2:
if(x2>0)
nr++;
break;
case 3:
if(x3>0)
nr++;
break;
case 4:
if(x2>1)
nr++;
break;
case 5:
if(x5>0)
nr++;
break;
case 6:
if(x2>0 && x3>0)
nr++;
break;
}
}
nr*=2;
if(r%2==0){
x2+=nr1[r-i+1]-nr1[i];
x3+=nr2[r-i+1]-nr2[i];
x5+=nr3[r-i+1]-nr3[i];
switch(d){
case 2:
if(x2>0)
nr++;
break;
case 3:
if(x3>0)
nr++;
break;
case 4:
if(x2>1)
nr++;
break;
case 5:
if(x5>0)
nr++;
break;
case 6:
if(x2>0 && x3>0)
nr++;
break;
}
}
printf("%d", nr);
return 0;
}