要求$ans=\sum_{i=1}^n \sum_{j=1}^m (n-i)(m-j)(gcd(i,j)-1)$

可以看做枚举矩阵的大小,然后左下右上必须取的方案数。

这是斜率单增的情况

然后大力反演即可。

最后$ans=ans*2+C(n,3)*m+C(m,3)*n$

$\Theta (n \log n)$

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define F(i,j,k) for (int i=j;i<=k;++i)
#define D(i,j,k) for (int i=j;i>=k;--i)
#define ll long long
#define md 1000000007
#define inf 0x3f3f3f3f
#define maxn 50005 ll vis[maxn],mu[maxn],pr[maxn],top; void init1()
{
mu[1]=1;
F(i,2,maxn)
{
if (!vis[i])
{
mu[i]=-1;
pr[++top]=i;
}
F(j,1,top)
{
if ((ll)i*pr[j]>=maxn) break;
vis[i*pr[j]]=1;
if (i%pr[j]==0) {mu[i*pr[j]]=0;break;}
mu[i*pr[j]]=-mu[i];
}
}
} ll f1[maxn],f2[maxn],f3[maxn],ans=0; ll Sum(ll n)
{
n=(((n+1)*n)>>1)%md;
return n;
} void solve(ll n,ll m)
{
if (n>m) swap(n,m);
ll ret=0;
F(d,1,n)
{
ll tmp=0;
F(p,1,n/d)
{
tmp+=mu[p]*(n/p/d)*(m/p/d)*m*n; tmp%=md;
tmp+=mu[p]*d*d*p*p*Sum(n/p/d)*Sum(m/p/d); tmp%=md;
tmp-=mu[p]*m*d*p*(m/p/d)*Sum(n/p/d); tmp%=md;
tmp-=mu[p]*n*d*p*(n/p/d)*Sum(m/p/d); tmp%=md;
}
ret+=tmp*(d-1);
}
ans=(2*ret)%md;
} ll n,m; ll C(ll n)
{
n%=md;
return (n*(n-1)*(n-2)/6)%md;
}
int main()
{
init1();//init2();
scanf("%lld%lld",&n,&m);
solve(n,m);
printf("%lld\n",(ans+(n*C(m))%md+(m*C(n))%md)%md);
}

  

最新文章

  1. IIS与Apache共用80端口
  2. Linux学习总结
  3. HTTP及网络安全
  4. Flash Builder 4.6 BUG 远程访问受阻
  5. ios项目不能再用UDID了
  6. AES的S-BOX构造优化
  7. 数据库中插入数据时发生ora-00984错误
  8. 20160210.CCPP体系详解(0020天)
  9. mysql innodb引擎 一次线上死锁分析排查步骤
  10. 如何免费的让网站启用https
  11. Is it possible to display icons in a PopupMenu?
  12. mysql5.7 启动报发生系统错误2
  13. habase 报错 ERROR: Can&#39;t get master address from ZooKeeper; znode data == null
  14. rabbitmq学习(三):rabbitmq之扇形交换机、主题交换机
  15. esxi上引起vm绑定浮动IP无法和外面通信
  16. Java的历史及发展
  17. Java-Runoob:Java 简介
  18. ridge regression 无惩罚,导致预测结果空间过大而无实用价值
  19. Android监听键盘右下角确定键
  20. Java多线程(四)isAlive

热门文章

  1. MySQL 导出一句话
  2. SnowKiting 2017/1/24
  3. hihoCoder #1162 : 骨牌覆盖问题&#183;三 (矩阵快速幂,DP)
  4. ABC3D创客项目:小风扇
  5. 机器学习之-奇异值分解(SVD)原理详解及推导
  6. 在web应用中使用日志
  7. 安装linux虚拟机(Ubuntu &amp; KALI)
  8. python之编码的进阶
  9. python之set (集合)
  10. shell脚本,awk如何处理文件中上下关联的两行。