Dreamoon loves summing up something for no reason. One day he obtains two integers a and b occasionally. He wants to calculate the sum of all nice integers. Positive integer x is called nice if and , where k is some integer number in range[1, a].
By we denote the quotient of integer division of x and y. By we denote the remainder of integer division of x and y. You can read more about these operations here: http://goo.gl/AcsXhT.
The answer may be large, so please print its remainder modulo 1 000 000 007 (109 + 7). Can you compute it faster than Dreamoon?
The single line of the input contains two integers a, b (1 ≤ a, b ≤ 107).
Print a single integer representing the answer modulo 1 000 000 007 (109 + 7).
1 1
0
2 2
8
For the first sample, there are no nice integers because is always zero.
For the second sample, the set of nice integers is {3, 5}.
直接推公式就行了。
代码:
//31ms
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int mod=1000000007;
int main()
{
long long a,b;
scanf("%I64d%I64d",&a,&b);
long long ans=0;
ans=(b*(b-1)/2%mod)*(((((a+1)*a/2)%mod)*b%mod+a)%mod)%mod;
cout<<ans<<endl;
return 0;
}