|
|
|
@ -7,10 +7,13 @@ const int Six = 166666668; /// 6,2关于mod的乘法逆元
|
|
|
|
|
const int Two = 500000004;
|
|
|
|
|
const int mod = 1e9 + 7; /// 尽量这样定义mod ,减少非必要的麻烦
|
|
|
|
|
|
|
|
|
|
inline int Mod(int a, int b) {
|
|
|
|
|
int Mod(int a, int b) {
|
|
|
|
|
return (a % mod) * (b % mod) % mod;
|
|
|
|
|
}
|
|
|
|
|
inline int F(int k, int n) { /// 求(k*n)^2+k*n
|
|
|
|
|
|
|
|
|
|
// 递推函数可以用通项式直接求解
|
|
|
|
|
// 通项式:a[kn]=(k*n)^2+k*n
|
|
|
|
|
int F(int k, int n) {
|
|
|
|
|
return (Mod(k, k) * Mod(Mod(n, n + 1), Mod(n + n + 1, Six)) % mod + Mod(Mod(1 + n, n), Mod(k, Two))) % mod;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -23,7 +26,7 @@ signed main() {
|
|
|
|
|
int n, m;
|
|
|
|
|
|
|
|
|
|
while (cin >> n >> m) {
|
|
|
|
|
int sum = F(1, n), ans = 0; /// 计算总和sum
|
|
|
|
|
int sum = F(1, n), ans = 0; // 计算总和sum
|
|
|
|
|
|
|
|
|
|
int t = m; // 复制出来
|
|
|
|
|
for (int i = 2; i * i <= t; i++) {
|
|
|
|
|