首先我们要有一个知识储备
1 加法:(a+b)%m=(a%m+b%m)%m
2 减法:(a-b)%m=(a%m-b%m)%m
3 乘法:a*b%m=(a%m)*(b%m)%m
我们可以每次计算就可以取余一次,这样就保证了最后取余的结果和一起相加再取余的结果一样
然后这个题目要怎么分析呢,首先的话 边长 为 n - 1 ,因为每边都是 n 个点,这是要注意的地方,然后我们每次只考了边长为 i 的正方形,发现有 n - i 个,包括自身以外,还有 i- 1 个斜着的正方形
代码如下
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
ll n;
cin >> n;
ll ans = 0;
for (ll i = 1; i < n; i++) {
ans += i * (n - i) * (n - i);
ans %= 1000000007;
}
cout << ans;
return 0;
}