证明:
例题:
1257: [CQOI2007]余数之和
本质是求
因此可以有如下代码:
#include <iostream>
using namespace std;
#define min(a, b) (a < b? a: b)
#define max(a, b) (a > b? a: b)
typedef long long ll;
int main()
{
ll n, k; cin >> n >> k;
ll res = n * k;
int j = 0;
for (int i = 1; i <= n; i = j + 1)
{
if (k / i == 0) break;
j = min(n, k / (k / i));
res -= (ll)(i + j) * (j - i + 1) / 2 * (k / i);
}
cout << res << endl;
return 0;
}