Pagini recente » Cod sursa (job #2708235) | Cod sursa (job #2934050) | Cod sursa (job #2295283) | Cod sursa (job #2205206) | Cod sursa (job #865913)
Cod sursa(job #865913)
#include <cstdio>
int R, D;
int curr[3], cond[3];
const int divs[3] = {2,3,5};
inline void getDivisors(int val,int s) {
while((val & 1) == 0) {
val >>= 1;
curr[0] += s;
}
while(val%3 == 0) {
val /= 3;
curr[1] += s;
}
while(val%5 == 0) {
val /= 5;
curr[2] += s;
}
}
inline bool isDivisible() {
switch (D){
case 6 : return (curr[0] > 0 && curr[1] > 0);
case 5 : return curr[2] > 0;
case 4 : return curr[0] > 1;
case 3 : return curr[1] > 0;
}
return curr[0] > 0;
}
int main()
{
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%d %d",&R,&D);
int ans = 0;
int r = (R - 1)>>1;
for(int i = 1;i <= r;i++) {
getDivisors(R - i + 1,1);
getDivisors(i,-1);
ans += 2*isDivisible();
}
if(R%2 == 0) {
r++;
getDivisors(R - r + 1,1);
getDivisors(r,-1);
ans += isDivisible();
}
printf("%d\n",ans);
return 0;
}