SUM OF SUB RECTANGLE AREAS java大数

SUM OF SUB RECTANGLE AREAS

题意:

给你一个范围,要你求所有的子矩形的面积。

思路:

找规律,可以发现对于

n=1
ans=(1)*(1)

n=2
ans= (2+1 + 1)*(2+1 +1)

n=3
ans = (3+2+1 + 2+1 + 1)*(3+2+1 + 2+1 +1)

那么根据上面,就可以知道一个结论,每个答案其实是一个以等差数列的前n项和为通项的数列。
式子就是 ( n ) ( n + 1 ) ( n + 2 ) 6 \frac{(n)(n+1)(n+2)}{6} 6(n)(n+1)(n+2)
最后对答案平方就可以了

ps:

和平方的求和公式有点像
n(n+1)(2n+1)/6

AC

import java.io.*;
import java.util.*;
import java.math.*;
public class Main{
    public static void main(String[] args){
        int tt;
        Scanner cin = new Scanner(System.in);
        tt = cin.nextInt();//cin>>tt;
        while(true){
            tt--;
            long n;
            n = cin.nextLong();
            BigInteger a = BigInteger.valueOf(n);
            BigInteger res = BigInteger.valueOf(n);
            res =  res.multiply(a.add(BigInteger.valueOf(1)));
            res = res.multiply(a.add(BigInteger.valueOf(2)));
            res = res.divide(BigInteger.valueOf(6));
            res = res.multiply(res);
            System.out.println(res);
            if(tt==0)break;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值