#include // Begin {{{ using namespace std; #define all(x) x.begin(), x.end() #define rep(i, n) for (i64 i = 0; i < (n); ++i) #define reps(i, s, n) for (i64 i = (s); i <= (n); ++i) using i64 = int_fast64_t; using pii = pair; template inline bool chmax(A &a, const B &b) { return b > a ? a = b, 1 : 0; } template inline bool chmin(A &a, const B &b) { return b < a ? a = b, 1 : 0; } constexpr int INF = 0x3f3f3f3f; constexpr i64 LINF = 0x3f3f3f3f3f3f3f3fLL; constexpr int MOD = int(1e9) + 7; //IN void IN() {} template void IN(Head&& head, Tail&&... tail) { cin >> head; IN(forward(tail)...); } //OUTS template struct int_{}; template ostream& print_tuple(ostream& out, const Tuple& t, int_) { out << get::value-Pos>(t) << " "; return print_tuple(out, t, int_()); } template ostream& print_tuple(ostream& out, const Tuple& t, int_<1>) { return out << get::value-1>(t); } template ostream& operator<<(ostream& out, const tuple& t) { return print_tuple(out, t, int_()); } #define OUTS(...) cout << make_tuple(__VA_ARGS__) << "\n"; //OUTL void OUTL() {} template void OUTL(Head&& head, Tail&&... tail) { cout << head << "\n"; OUTL(forward(tail)...); } // }}} End i64 cnt(i64 n, i64 e) { if (e > n * 2) return 0; if (e > n) return (n * 2 + 1) - e; return e - 1; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); i64 n, k; IN(n, k); i64 res = 0; for (i64 i = 1; i * i <= k; ++i) { if (k % i == 0) { res += cnt(n, i) * cnt(n, k / i) * (i * i == k ? 1 : 2); } } OUTL(res); return 0; }