版权声明:如需转载请标识出处链接
立方和
[ Submit Code ] [ Top 20 Runs ] [ Runs Status ]
Acceteped : 193 Submit : 1307
Time Limit : 1000 MS Memory Limit : 65536 KB
Description
题目描述
请计算a到b的立方和。
输入
第一行是一个整数K,表示样例的个数。 以后每行一个测试用例,为两个整数 a,b, 1≤a≤b≤1,000,000,000。
输出
每行输出一个样例的结果,由于可能会很大,需要将结果对10003取模。
样例输入
2
1 2
1 3
样例输出
9
36
图形法推倒1的立方到n的立方求和的公式。推理过程如下:
计算结果如下: 1³+2³+3³+…+n³=(n*(n+1)/2)²
import java.util.*;
import java.math.*;
public class Cube {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
long k=in.nextLong();
for(long i=1;i<=k;++i){
long a=in.nextLong();
long b=in.nextLong();
long c1,c2;
BigDecimal A,B,sum1,c4,c3,c5;
long sum = 0;
// c1=(a*(a-1)/2)*(a*(a-1)/2);
// c2=(b*(b+1)/2)*(b*(b+1)/2);
A=new BigDecimal(a);
B=new BigDecimal(b);
c3=A.multiply(A.subtract(new BigDecimal(1)).divide(new BigDecimal(2)));
c3=c3.multiply(c3);
c4=B.multiply(B.add(new BigDecimal(1)).divide(new BigDecimal(2)));
c4=c4.multiply(c4);
c5=c4.subtract(c3);
c5=c5.remainder(new BigDecimal(10003));
//不晓得为什么用大数,当b为偶数时就会有小数点,所以改成int
int sum4=c5.intValue();
System.out.println(sum4);
}
}
}