#include #include using namespace std; typedef long long int lli; lli rozklad[432][432]; lli rozkladnk[432]; bool isprime[432]; int main(void) { lli i, j, k, n, t, vysl, p; for (i = 0; i < 432; i++) { isprime[i] = true; } isprime[0] = false; isprime[1] = false; p = 2; while (i < 432) { while (!isprime[p]) p++; i = 2*p; while (i < 432) { isprime[i] = false; i += p; } i = p + 1; } for (i = 0; i < 432; i++) { t = i; for (j = 2; j < 432; j++) { rozklad[i][j] = 0; if (isprime[j]) { while (t > 0 && t%j == 0) { rozklad[i][j]++; t /= j; } } } } while (cin >> n >> k) { memset(rozkladnk, 0, sizeof(rozkladnk)); for (i = n; i > n - k; i--) { for (j = 0; j < 432; j++) rozkladnk[j] += rozklad[i][j]; } /* for (i = 0; i < 6; i++) cout << rozkladnk[i] << " "; cout << endl; */ for (i = 1; i <= k; i++) { for (j = 0; j < 432; j++) rozkladnk[j] -= rozklad[i][j]; } /* for (i = 0; i < 6; i++) cout << rozkladnk[i] << " "; cout << endl; */ vysl = 1; for (i = 2; i < 432; i++) vysl *= rozkladnk[i] + 1; cout << vysl << endl; } return 0; }