public static int k = 1000000007;
public static long help(long h, long l) {
long min = Math.min(h, l);
// long re = 0;
// for (int i = 1; i <= min; i++) {
// long num = (h + 1 - i) * (l + 1 - i);
// re += num * i;
// re %= k;
// }
//
// re = (h + 1) * (l + 1) * (min + 1) * min / 2 - (h + l + 2) * min * (min + 1) * (2 * min + 1) / 6
// + (min + 1) * min / 2 * (min + 1) * min / 2;
BigInteger bh = BigInteger.valueOf(h + 1);
BigInteger bl = BigInteger.valueOf(l + 1);
BigInteger bmin = BigInteger.valueOf(min);
BigInteger bmin1 = BigInteger.valueOf(min + 1);
BigInteger b2min1 = BigInteger.valueOf(2 * min + 1);
BigInteger b2 = BigInteger.valueOf(2);
BigInteger b6 = BigInteger.valueOf(6);
BigInteger bre = bh.multiply(bl).multiply(bmin1).multiply(bmin).divide(b2)
.add(bh.add(bl).multiply(bmin).multiply(bmin1).multiply(b2min1).divide(b6).negate())
.add(bmin1.multiply(bmin).divide(b2).multiply(bmin1).multiply(bmin).divide(b2));
bre = bre.mod(BigInteger.valueOf(k));
return bre.longValue();
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T = in.nextInt();
for (int t = 0; t < T; t++) {
int r = in.nextInt();
int c = in.nextInt();
long re = help(r - 1, c - 1);
System.out.println("Case #" + (t + 1) + ": " + re);
}
}
Kickstart Round A 2017 Problem A. Square Counting
最新推荐文章于 2018-08-25 14:26:29 发布