题目描述
链接:https://ac.nowcoder.com/acm/contest/35753/H
来源:牛客网
题意
思路
gcd(i,j)*lcm(i,j)=i * j
即(m+1)*m/2 * (n+1)*n/2
注意用逆元
code
#include<bits/stdc++.h>
#define DEBUG(x) #x<<":"<<(x)<<' '
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
// const int N;
ll mul(ll x,ll y)
{
ll ret=0;
x%=mod;
y%=mod;
while(x)
{
if(x&1)ret=(ret+y)%mod;
y=(y<<1)%mod;
x>>=1;
}
return ret;
}
ll qpow(ll e,int n)
{
ll ret=1;
while(n)
{
if(n&1)ret=ret*e%mod;
e=e*e%mod;
n>>=1;
}
return ret;
}
void solv()
{
ll n,m;
cin>>n>>m;
ll ans=mul(mul(n,n+1),mul(m,m+1))*qpow(4,mod-2)%mod;
cout<<ans<<'\n';
}
int main()
{
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int T=1;
// cin>>T;
while(T--)
{
solv();
}
return 0;
}