#include #include int main() { long N, K; std::cin >> N >> K; std::unordered_map dp; dp[1] = 1; long ans = 0; for (int i = 1; i <= N; i++) { std::unordered_map new_dp = dp; for (const auto& p : dp) { const auto k = p.first; const auto v = p.second; if (i * k * (i + 1) < K) { new_dp[i * k] += v; } else if (i * k <= K) { ans += v; } } dp = new_dp; } long s = 0; for (auto p : dp) { s += p.second; } std::cout << ans + s - 1 << std::endl; return 0; }