package T1;
import java.util.Scanner;
public class Main {
static long mod = 1000000007;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long n;
n = sc.nextLong()-1;//-1是为了得边长
/*
* 肯定是要取每个点测试
*
* 正放 ,斜着放 两种方式
*
*
*
* 边长为1 就有9个 n*n
* 边长为2 就有8个 2*(n-1)*(n-1)
* 边长为3 就有 3个 3*(n-2)*(n-2)
*
*
* 正放的公式
* (n-a+1)*(n-a+1)//a是边长
* 规律:
* 总共的就是
* 用边长去乘以每一个正放正方形的个数
*
*
*/
long count=0;
for (int i = 1; i <=n; i++) {
count = (count + i*(n-i+1)*(n-i+1))%mod;
}
System.out.println(count);
}
}
我先放代码主要是考虑斜着放的情况,如图:
就这两个可以看出规律3x3有两个斜放着的,2x2有一个斜着的,那么总共就有的是有边长x正放着的正方形的个数。
知道这个规律就简单了