Time Limit: 2 sec / Memory Limit: 256 MB
問題文
Indeed 社の社員である A さんは無限に広がる正三角形状の座標系を眺めています。 上から x 段目の左から y 番目の座標は (x,y) の形で表され、以下のように並んでいます。
(1, | 1) | ||||||||
(2, | 1) | (2, | 2) | ||||||
(3, | 1) | (3, | 2) | (3, | 3) | ||||
(4, | 1) | (4, | 2) | (4, | 3) | (4, | 4) | ||
: | : | : | : | : | : | : | : |
つまり、この座標系では、上から k 段目には k 個の座標が並んでいます。
この座標系の、ある座標 (x,y) に対する重みを x と y の積で定義します。
A さんは、以下の問題を規則性を見つけることによって手で解こうとしています。
2 つの正整数 A,B (1≦A≦B≦10^6) が与えられるので、上から A 段目と上から B 段目の間、つまり A≦x≦B を満たす全ての座標 (x,y) の重みの総和を答えてください。 ただし、答えは非常に大きくなる可能性があるのでその総和を 1,000,000,007(10^9+7) で割った余りを答えてください。
あなたの仕事は、A さんが頑張って導き出した答えの正誤を確かめるために、コンピューターの力を使い予め答えを自動計算しておくプログラムをつくることです。
入力
入力は以下の形式で標準入力から与えられる。
A B
- 1 行目には、正の整数 A (1≦A≦10^6) が与えられる。
- 2 行目には、正の整数 B (A≦B≦10^6) が与えられる。
部分点
この問題には部分点が設定されている。
- 1≦A≦B≦2000 を満たすデータセット 1 に正解した場合は、20 点が与えられる。
- 全てのテストケースに正解した場合は、上記とは別に 80 点が与えられる。
出力
1 行目に、問題文中の座標系における A≦x≦B を満たす全ての座標 (x,y) の重みの総和を 1,000,000,007 で割った余りを出力せよ。出力の末尾に改行を入れること。
入力例1
2 3
出力例1
24
2 段目から 3 段目の間に含まれる座標は以下の 5 つです。
(2, | 1) | (2, | 2) | ||||||
(3, | 1) | (3, | 2) | (3, | 3) |
したがって、答えは 24(=2×1+2×2+3×1+3×2+3×3) となります。
入力例2
1 100
出力例2
12920425
入力例3
999999 999999
出力例3
500507028
1,000,000,007 で割った余りを取るのを忘れないでください。