第四题思路 1,2,3,4只用计算2次 5到 4n-4 需要计算三次 4n-4+1到 n*n 需要计算4次 用等差数列求和 设求l,r 则(r-l+1)*(l+r)/2 我们假设为a*b/2 a和b都是1e9的,需要用大整数相乘 算法如下 long long qmul(long long a, long long b, long long mod) { long long res = 0; while (b) { if (b & 1) res = (res + a) % mod; (a <<= 1) %= mod; b >>= 1; } return res; } 除以2等价于乘以2的逆元 求逆元算法如下 ll qmi(ll a, ll b, ll mod){ ll res = 1; while(b){ if(b & 1) res = res * a % mod; a = a * a % mod; b >>= 1; } return res; } ll fermat(ll a, ll mod){ return qmi(a, mod - 2, mod); }