首页 > 其他 > 详细

Codeforces Round #272 (Div. 2) C

时间:2014-10-13 23:03:48      阅读:487      评论:0      收藏:0      [点我收藏+]

题目:

C. Dreamoon and Sums
time limit per test
1.5 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Dreamoon loves summing up something for no reason. One day he obtains two integers a and boccasionally. He wants to calculate the sum of all nice integers. Positive integer x is called nice if bubuko.com,布布扣 and bubuko.com,布布扣, where k is some integer number in range [1,?a].

By bubuko.com,布布扣 we denote the quotient of integer division of x and y. By bubuko.com,布布扣 we denote theremainder 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 ab (1?≤?a,?b?≤?107).

Output

Print a single integer representing the answer modulo 1?000?000?007 (109?+?7).

Sample test(s)
input
1 1
output
0
input
2 2
output
8
Note

For the first sample, there are no nice integers because bubuko.com,布布扣 is always zero.

For the second sample, the set of nice integers is {3,?5}.


题意分析:

数学题。看懂公式就行了。考虑枚举一下余数, 如果m = x%b 则 x = mk*b+m = m(kb+1)  m可以预处理为所有可能的余数和,注意long long 和取MOD。

代码:

#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <iostream>

using namespace std;
const int MOD=1000000007;
int main()
{
    long long a,b;
    while(cin>>a>>b)
    {
        long long m=(1+b-1)*(b-1)/2%MOD;
        //cout<<m<<endl;
        long long sum=0;
        {
            for(long long i=1;i<=a;i++)
            {
                sum=(sum%MOD+m*((b*i)%MOD+1)%MOD)%MOD;
            }
        }
        cout<<sum<<endl;
    }
}



Codeforces Round #272 (Div. 2) C

原文:http://blog.csdn.net/notdeep__acm/article/details/40051693

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!