#include #include #include #include #define N 500 int f[N][N]; void add(int p[], int q[]) { int i; for (i = 0; i < N; i++) { p[i] += q[i]; } } void sub(int p[], int q[]) { int i; for (i = 0; i < N; i++) { if (p[i] < q[i]) { fprintf(stderr,"BUUUUG %d %d %d\n",i,p[i],q[i]); exit(1); } p[i] -= q[i]; } } typedef unsigned long long ull; int main() { int i, j, k, x, n; int p[N]; ull d; for (i = 0; i < N; i++) { x = i; memset(f[i],0,sizeof(f[0])); for (j = 2; j <= i; j++) { while (x % j == 0) { x /= j; f[i][j]++; } } } while (scanf("%d%d",&n,&k) == 2) { memset(p,0,sizeof(p)); for (i = 2; i <= n; i++) { add(p,f[i]); } for (i = 2; i <= k; i++) { sub(p,f[i]); } for (i = 2; i <= (n-k); i++) { sub(p,f[i]); } d = 1ULL; for (i = 0; i < N; i++) { d = d*(p[i]+1); } printf("%llu\n",d); } return 0; }