codeforces 476C Dreamoon and Sums

来源:互联网 发布:mysql 导入employees 编辑:程序博客网 时间:2024/05/01 02:36

设x=n*b+t,,t的范围是1到b-1, 则[div(x,b)/mod(x,b)]=[(n*b+t)/(t*b)]=k,[]代表向下取整,[(n*b+t)/(t*b)]=(n*b)/(t*b)=k,所以n=t*k,即x=t*k*b+t=t*(k*b+1)。

用等差数列求和公式即可推出sum=(b-1)*b/2*(b*a*(a+1)/2+a) .

#include <iostream>#include<cstdio>#include<cstring>#define ll long long#define mod 1000000007using namespace std;int main(){    ll a,b,ans=0;    scanf("%I64d%I64d",&a,&b);    ans=((b-1)*b/2)%mod*((b*(a*(a+1)/2%mod)+a)%mod);    printf("%I64d\n",ans%mod);    return 0;}


0 0