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 div(x,y)we denote the quotient of integer division of x and y. By mod(x,y) we denote the remainder of integer division of x andy. 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 mod(x,1) is always zero.
For the second sample, the set of nice integers is {3, 5}.
题解
可将等式化为:x=k*mod(x,b)*b+mod(x,b).所以枚举1~a即可。
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<cmath>
#include<algorithm>
#define ll long long
#define mod 1000000007
using namespace std;
ll a,b,ans;
int main()
{
scanf("%I64d%I64d",&a,&b);
ll i,x,y;
for(ll i=1;i<=a;i++)
{x=(i*b+1)%mod;
y=(b*(b-1)/2)%mod;
ans=(ans+x*y)%mod;
}
printf("%I64d\n",ans);
return 0;
}