Description
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?
Input
The single line of the input contains two integers a, b (1 ≤ a, b ≤ 107).
Output
Print a single integer representing the answer modulo 1 000 000 007 (109 + 7).
Sample Input
1 1
0
2 2
8
Hint
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}.
水题推公式就行,数学题,x%b的值可以从0取到b-1.加起来就是0+1+2+3+......+b-1.等差数列求和。(0+b-1)*b/2=b*(b-1)/2;
#include <stdio.h>
#define MOD 1000000007
int main()
{
long long a,b;
scanf("%I64d%I64d",&a,&b);
long long sum=0;
if(b!=1)
for(int k=1;k<=a;k++)
sum=(sum+((b*(b-1)/2)%MOD)*((k*b+1)%MOD))%MOD;
printf("%I64d\n",sum);
}