#include <stdio.h>
#define RMAX 5000005
int R, D;
inline int pwr(int n, int div)
{
int count = 0, aux = n;
while(aux)
{
count += aux/div;
aux /= div;
}
return count;
}
int nr(int r, int d)
{
int count = 0, i, aux[3];
for (i = 1; i <= r/2; i++)
{
switch(d)
{
case 2:
count += (pwr(r,2)-pwr(i,2)-pwr(r-i,2) > 0 ? 1 : 0);
break;
case 3:
count += (pwr(r,3)-pwr(i,3)-pwr(r-i,3) > 0 ? 1 : 0);
break;
case 4:
count += (pwr(r,2)-pwr(i,2)-pwr(r-i,2) >= 2 ? 1 : 0);
break;
case 5:
count += (pwr(r,5)-pwr(i,5)-pwr(r-i,5) > 0 ? 1 : 0);
break;
case 6:
count += (((pwr(r,2)-pwr(i,2)-pwr(r-i,2) > 0) &&
(pwr(r,3)-pwr(i,3)-pwr(r-i,3) > 0)) ? 1 : 0);
break;
}
}
count *= 2;
if ((r/2)*2 == r)
{
switch(d)
{
case 2:
count -= (pwr(r,2)-2*pwr(r/2,2) > 0 ? 1 : 0);
break;
case 3:
count -= (pwr(r,3)-2*pwr(r/2,3) > 0 ? 1 : 0);
break;
case 4:
count -= (pwr(r,2)-2*pwr(r/2,2) >= 2 ? 1 : 0);
break;
case 5:
count -= (pwr(r,5)-2*pwr(r/2,5) > 0 ? 1 : 0);
break;
case 6:
count -= (((pwr(r,2)-2*pwr(r/2,2) > 0) && (pwr(r,3)-2*pwr(r/2,3) > 0)) ? 1 : 0);
}
}
return count;
}
int main()
{
FILE *in, *out;
in = fopen("pascal.in", "r");
out = fopen("pascal.out", "w");
fscanf(in, "%d %d", &R, &D);
fprintf(out, "%d\n", nr(R, D));
fclose(in);
fclose(out);
return 0;
}