=∑i∑j((n mod i)(m mod j))∑i∑j(n−⌊ni⌋i)(m−⌊mj⌋j)−∑i(n−⌊ni⌋i)(m−⌊mi⌋i)
%%% http://blog.csdn.net/acdreamers/article/details/8809517#include #include usingnamespacestd;
typedeflonglong ll;
ll read() {
ll s = 0, f = 1; char ch = getchar();
for (; ch < '0' || ch > '9'; ch = getchar()) if (ch == '-') f = -1;
for (; '0' <= ch && ch <= '9'; ch = getchar()) s = s * 10 + ch - '0';
return s * f;
}
const ll mod = 19940417;
ll n, m, ans;
ll sum(ll n) {
return n * (n + 1) % mod * (2 * n + 1) % mod * 3323403 % mod;
}
ll solve(ll m, ll n) {
ll ans = 0, i, p;
for (i = 1; i <= m; i = p + 1) {
p = min(m, n / (n / i));
(ans += (n / i) * (i + p) % mod * (p - i + 1) % mod * 9970209 % mod) %= mod;
}
return ans;
}
int main() {
ll n = read(), m = read(), i, ans, p;
if (n < m) swap(n, m);
ans = (n * n - solve(n, n)) % mod * ((m * m - solve(m, m)) % mod);
(ans += -m * m % mod * n % mod + solve(m, n) * m % mod + solve(m, m) * n % mod) %= mod;
for (i = 1; i <= m; i = p + 1) {
p = min(m, min(n / (n / i), m / (m / i)));
(ans += -(n / i) * (m / i) % mod * ((sum(p) - sum(i - 1)) % mod) % mod) %= mod;
}
printf("%lld
", (ans % mod + mod) % mod);
return0;
}
答案为(3 mod 1)(4 mod 2)+(3 mod 1) (4 mod 3)+(3 mod 1) * (4 mod 4) + (3 mod 2) * (4 mod 1) + (3 mod 2) * (4 mod 3) + (3 mod 2) * (4 mod 4) + (3 mod 3) * (4 mod 1) + (3 mod 3) * (4 mod 2) + (3 mod 3) * (4 mod 4) = 1