如果你是用的分块除法,别忘了算等差数列的时候,把n和m转成long long
for (int L = 1, R; L <= n; L = R + 1)
{
R = min(n / (n / L), m / (m / L));
ll sum = ((ll)(n / L + 1) * (n / L) / 2 % P) * ((ll)(m / L + 1) * (m / L) / 2 % P) % P;
ans = (ans + sum * (f[R] - f[L - 1] + P) % P) % P;
}