//include //------------------------------------------ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define SHOW_VECTOR(v) {std::cerr << #v << "\t:";for(const auto& xxx : v){std::cerr << xxx << " ";}std::cerr << "\n";} #define SHOW_MAP(v){std::cerr << #v << endl; for(const auto& xxx: v){std::cerr << xxx.first << " " << xxx.second << "\n";}} using LL = long long; //------------------------------------------ //------------------------------------------ vector FACT(LL x) { vector ret; for (LL i = 1; i * i <= x; i++) { if (x % i == 0) { ret.push_back(i); if (i != x / i) { ret.push_back(x / i); } } } sort(ret.begin(), ret.end()); return ret; } int main() { LL N, K; cin >> N >> K; auto fact = FACT(K); LL ans = 0; for (auto x: fact) { LL y = K / x; LL x1 = max(0LL, min(x - 1, N) - max(0LL, (x - 1) - N)); LL y1 = max(0LL, min(y - 1, N) - max(0LL, (y - 1) - N)); ans += x1 * y1; } cout << ans << endl; }