由题目描述我们可以清楚,我们需要找到所有的正方形方案数目,我们通过案例的观察可以发现,如果一个正方形占1个方格,就只会有一种形状,而当占领2 * 2 = 4个方格的时候,会有两种形状,而占领3 * 3 = 9个方格的时候,就会有三种情况,因此我们可以找到规律,当占领N * N格子的情况下,正方形的形状一共有N种,因此我们需要将每种情况对应的所有方格数目依次加上,并模以1e9 + 7即可
上代码
#include<iostream>
#include<cstring>
#include<algorithm>
#define int long long
using namespace std;
const int mod = 1e9 + 7;
signed main(void)
{
int N; cin >> N;//方格的棱上的点数
N--;//获取方格的长度
int res = 0;
int ans = 0;
for(int i = 1; i <= N; i++){
int n = (N - i + 1) * (N - i + 1);//获取当前占的方格长度,有多少种情况
res = n * i;//如果占的长度为i,就一共有i种情况
ans = (ans + res) % mod;
}
cout << ans << endl;
return 0;
}