G - Dreamoon and Sums 数学

快速计算特定数之和
本文介绍了一种快速计算特定条件下整数之和的方法。利用数学技巧将复杂问题简化,并通过编程实现高效求解。
部署运行你感兴趣的模型镜像
G - Dreamoon and Sums
Time Limit:1500MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u

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 ab (1 ≤ a, b ≤ 107).

Output

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

Sample Input

Input
1 1
Output
0
Input
2 2
Output
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}.


给你此公式 ,k的范围是[1,a],然后给你a和b,让你求满足此条件的x的和。
此公式可以化简为: x=k*mod(x,b)*b+mod(x,b) 即x=(k*b+1)*mod(x,b),k可以枚举,b已知,而mod(x,b)的取值是1~b,可以通过公式直接求出。

#include<cstring>
#include<iostream>
#include<cstdio>
using namespace std;
#define mod 1000000007
int main()
{
  long long a,b;
  while(cin>>a>>b)
{


long long ans=0;
for(long long i=1;i<=a;i++)//k
{


long long c=(i*b+1)%mod;//(k*b+1);
long long d=((b-1)*b/2)%mod;//mod(x,b);
ans=(ans+c*d)%mod;
}
printf("%lld\n",ans);
}
}

您可能感兴趣的与本文相关的镜像

Langchain-Chatchat

Langchain-Chatchat

AI应用
Langchain

Langchain-Chatchat 是一个基于 ChatGLM 等大语言模型和 Langchain 应用框架实现的开源项目,旨在构建一个可以离线部署的本地知识库问答系统。它通过检索增强生成 (RAG) 的方法,让用户能够以自然语言与本地文件、数据库或搜索引擎进行交互,并支持多种大模型和向量数据库的集成,以及提供 WebUI 和 API 服务

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值