#include <stdio.h>
typedef long long ll;
ll cal1(ll n) {
return n * (n + 1) / 2;
}
ll cal2(ll n) {
return n * (n - 1) * (n - 2) / 6;
}
short f[1001];
int main() {
int n, m;
scanf("%d%d", &n, &m);
ll s = cal2((n + 1) * (m + 1)) - cal2(n + 1) * (m + 1) - cal2(m + 1) * (n + 1);
for (int i = 2; i <= n; ++i) {
f[i] += i - 1;
for (int j = i * 2; j <= n; j += i)
f[j] -= f[i];
s -= 2 * f[i] * ((ll)n / i * (m / i) * (n + 1) * (m + 1) - (cal1(n / i) * (m / i) * (m + 1) + cal1(m / i) *
(n / i) * (n + 1)) * i + cal1(n / i) * cal1(m / i) * i * i);
}
printf("%lld\n", s);
}
一本通1655:数三角形
最新推荐文章于 2025-05-16 14:00:49 发布