/* * 解法: k mod i = k - i * [k / i], * 所以 ans = k - 1 * [k / 1] + k - 2 * [k / 2] + ... + k - n * [k / n], * 所以 ans = n * k - (1 * [k / 1] + 2 * [k / 2] + ... + n * [k / n]), * 观察到 1, 2, ... , n 为递增数列, 只是 [k / 1], [k / 2], ... , [k / n] 会有不同, * 但是 [k / 1], [k / 2], ... , [k / n] 各段必然是连续相同的, 所以分段计算. */ #include <iostream> using namespace std; __int64 n, k, i, j, d; __int64 ans; int main() { while (scanf("%I64d %I64d", &n, &k) != EOF) { ans = n * k; if (n > k) n = k; for (i = 1; i <= n; ) { d = k / i; j = k / d; if (j > n) j = n; ans -= d * ((i + j) * (j - i + 1) / 2); i = j + 1; } printf("%I64d/n", ans); } return 0; }