D - 井井井 / ###
問題概略
x軸と平行な直線がM本、y軸と平行な直線がN本ある
このなかに存在する全ての長方形の面積の合計を109+7 で割ったあまりを出力してください。
制約
- 2≤n,m≤105
- −109≤x1<...<xn≤109
- −109≤y1<...<ym≤109
- xi,yi は整数である。
幅が1の物、2の物の時に足される区間を書いてみる
1 2 3 4 5 6 7 8 9
ーーーーーーーー 1 のとき
ーーーーーーーー 2のとき
ーーーーーー
ーーーーーーーー 3のとき
ーーーーーー
ーーーー
ーーーーーーーー 4のとき
ーーーーーー
ーーーー
ーー
ーーーーーーーー 5のとき
ーーーーーー
ーーーー
ーー
ーーーーーーーー 6のとき
ーーーーーー
ーーーー
ーーーーーーーー 7のとき
ーーーーーー
ーーーーーーーー 8 のとき
真ん中に行くにつれて、区間が足される回数は2ずつへり、区間の長さも2ずつへる
public static void main(String[] args)
{
N = sc.nextInt();
M = sc.nextInt();
x = sc.nextIntArray(N);
y = sc.nextIntArray(M);
long sumx = 0;
int l = 0;
int r = N - 1;
int kasa = N - 1;
while (kasa > 0)
{
sumx = modSum(sumx, modMul(modDiff(x[r], x[l]), kasa));
l++;
r--;
kasa -= 2;
}
long sumy = 0;
l = 0;
r = M - 1;
kasa = M - 1;
while (kasa > 0)
{
sumy = modSum(sumy, modMul(modDiff(y[r], y[l]), kasa));
l++;
r--;
kasa -= 2;
}
long res = modMul(sumx, sumy);
System.out.println(res);
}