数正方形-决赛

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正放着的正方形的个数。

知道这个规律就简单了

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暑假学习中---

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值