思路
公式:i*(n-i)^2
,i
的取值范围[1,n)
,累加每个i
取值的结果,就是答案。
证明:
不难发现,边长为i
的正方形矩阵通过旋转,共有i
个正方形。
而在n × n
的点阵中,共有(n-i)^2
个边长为i
的正方形;
如中间i=2
的图n=4
,则共有(4-2)^2=4
个边长为2
正方形。
每计算一个i
取一次模,变量都用long
,防爆。
code
import java.util.Scanner;
public class 数正方形 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
long n=sc.nextInt();
sc.close();
long ans=0;
long e=1000000007;
for (int i = 1; i < n; i++) {
ans=(ans+i*(n-i)*(n-i))%e;
}
System.out.println(ans);
}
}