#include #include #include #include #include #include #include #include #include #include #include #include //#include #include using namespace std; //using namespace atcoder; using ll = long long; using pll = pair; //using mint = modint998244353; #define all(i) (i).begin(),(i).end() #define pb push_back #define INF 100000000000000000 #define rep(i,n) for (int i=0;i a){ x = a; return 1; } else{ return 0; } } bool chmax(ll &x,ll a){ if (x < a){ x = a; return 1; } else{ return 0; } } int dp[210][10001]; void calc(int N){ dp[N+1][1] = 1; for (int i=N;i>=1;i--){ for (int prod=1;prod<10001;prod++){ dp[i][prod] += dp[i+1][prod]; if (prod*i < 10001){ dp[i][prod*i] += dp[i+1][prod]; } } } for (int i=0;i>N>>K; calc(N); queue> A; A.push(make_pair(1,1)); ll res=-1; while (!A.empty()){ auto [val,L] = A.front(); A.pop(); res += 1; for (int i=L;i<=N;i++){ if (val*i<=K){ if (val*i>=100000){ res += dp[i+1][K/(val*i)]; } else{ A.push({val*i,i+1}); } } else{ break; } } } cout<