求 $\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)\mu(gcd(i,j))^2$
 
$\Rightarrow \sum_{d=1}^{n}\mu(d)^2\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{ij}{d}[gcd(i,j)==d]$
 
$\Rightarrow \sum_{d=1}^{n}\mu(d)^2\frac{1}{d}\sum_{i=1}^{n}\sum_{j=1}^{m}ij[gcd(i,j)==d]$
 
$\Rightarrow\sum_{d=1}^{n}\mu(d)^2d\sum_{i=1}^{\left \lfloor \frac{n}{d} \right \rfloor}\sum_{j=1}^{\left \lfloor \frac{m}{d} \right \rfloor}ij[gcd(i,j)==1]$
 
省略一些反演的套路.....
 
$\Rightarrow \sum_{d=1}^{n}\mu(d)^2d\sum_{b=1}^{\left \lfloor \frac{n}{d} \right \rfloor}\mu(b)b^2\sum_{i=1}^{\left \lfloor \frac{n}{db} \right \rfloor}i\sum_{j=1}^{\left \lfloor \frac{m}{d} \right \rfloor}j$
 
令 $Sum(n,m)=\frac{n(n+1)}{2}\times\frac{m(m+1)}{2}$
 
原式 $= \sum_{d=1}^{n}\mu(d)^2d\sum_{b=1}^{\left \lfloor \frac{n}{d} \right \rfloor}\mu(b)b^2Sum(\left \lfloor \frac{n}{db} \right \rfloor,\left \lfloor \frac{m}{db} \right \rfloor)$ 
 
令 $D=db$
 
$\Rightarrow\sum_{D=1}^{n}Sum(\left \lfloor \frac{n}{D} \right \rfloor,\left \lfloor \frac{m}{D} \right \rfloor)\sum_{d|D}\mu(d)^2d\times\mu(\frac{D}{d})\times(\frac{D}{d})^2$
 
令 $h(D)=\sum_{d|D}\mu(d)^2d\times\mu(\frac{D}{d})\times(\frac{D}{d})^2$
 
上式 $=\sum_{D=1}^{n}Sum(\left \lfloor \frac{n}{D} \right \rfloor,\left \lfloor \frac{m}{D} \right \rfloor)\times h(D)$
 
如果能知道 $h(D)$ 的前缀和,就可以用 $\sqrt n$ 的时间复杂度完成每一个询问
 
求 $h(D)$ 有两种方式,第一种是暴力枚举因数,直接更新,时间复杂度是正确的.
另一种方式是线筛 $h$ 函数,因为我们发现这个是积性的.
这里讲一下线性筛的做法(题解里写的是第一种)
 
(1) $D$ 为质数,$h(D)=D-D^2$
 
(2) $i,p$ 互质,那么 $h(i\times p)=h(i)\times h(p)$
 
(3) $i\%p==0$
 
先列出 $h(i)=\sum_{d|i}\mu(d)^2d\times\mu(\frac{i}{d})\times(\frac{i}{d})^2$
 
令 $t=\frac{i}{p}$
 
(1)若 $t$ 中也含有 $p$ 这个因子,$i\times p$ 中 $p$ 的次幂至少为 $3$,无论如何 $h(i)$ 都是 $0$
 
(2)若 $t$ 中没有 $p$ 这个因子,考虑 $\sum_{d|t}\mu(d)^2d\times\mu(\frac{i}{d})\times(\frac{i}{d})^2$ 这个式子 在乘一个 $p$ 会导致这个式子变成原来的 $-p^2$ 倍 .
再考虑 $i$ 中至少有一个 $p$ 对 $h(i\times p)$ 的贡献:我们发现无论如何 $d$ 中至少会有 $2$ 个 $p$ 的因子,所有贡献为 $0$ . 这个情况下 $h(i\times p)=-h(t)\times p^3$ 
#include<bits/stdc++.h>
#define maxn 4020002
#define ll long long
#define M 4000001
using namespace std;
#define O2 __attribute__((optimize("-O2")))
char *p1,*p2,buf[100000];
#define nc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
int rd() {int x=0; char c=nc(); while(c<48) c=nc(); while(c>47) x=(((x<<2)+x)<<1)+(c^48),c=nc(); return x;}
void setIO(string s)
{
string in=s+".in";
string out=s+".out";
freopen(in.c_str(),"r",stdin);
freopen(out.c_str(),"w",stdout);
}
int cnt;
bool vis[maxn];
int prime[maxn], mu[maxn];
ll g[maxn],mod=1,sum[maxn];
O2 inline void Init()
{
int i,j;
mu[1]=1;
for(i=1;i<=30;++i) mod=mod*2;
for(i=2;i<=M;++i)
{
if(!vis[i]) prime[++cnt]=i, mu[i]=-1;
for(j=1;j<=cnt&&1ll*prime[j]*i<=M;++j)
{
vis[prime[j]*i]=1;
if(i%prime[j]==0)
{
mu[i*prime[j]]=0;
break;
}
mu[i*prime[j]]=-mu[i];
}
}
for(i=1;i<=M;++i)
for(j=1;1ll*i*j<=M;++j)
if(mu[j]) g[i*j]+=mu[i]*i, g[i*j]%mod;
for(i=1;i<=M;++i) g[i]=(1ll*g[i]*i+g[i-1]+mod)%mod;
for(i=1;i<=M;++i) sum[i]=(1ll*(i+1)*i/2)%mod;
}
O2 int main()
{
// setIO("input");
Init();
int T,n,m;
T=rd();
while(T--)
{
n=rd(), m=rd();
if(n>m) swap(n,m);
int i,j;
ll re=0;
for(i=1;i<=n;i=j+1)
{
j=min(n/(n/i), m/(m/i));
re=(re + (1ll*sum[n/i]*sum[m/i]*(g[j]-g[i-1])%mod)%mod + mod)%mod;
}
printf("%lld\n",re);
}
return 0;
}

  

BZOJ 2694: Lcm 莫比乌斯反演 + 积性函数 + 线性筛 + 卡常的更多相关文章

  1. BZOJ 2693: jzptab 莫比乌斯反演 + 积性函数 +筛法

    Code: #include<bits/stdc++.h> #define ll long long #define M 10001000 #define maxn 10200100 #d ...

  2. bzoj2693--莫比乌斯反演+积性函数线性筛

    推导: 设d=gcd(i,j) 利用莫比乌斯函数的性质 令sum(x,y)=(x*(x+1)/2)*(y*(y+1)/2) 令T=d*t 设f(T)= T可以分块.又由于μ是积性函数,积性函数的约束和 ...

  3. 积性函数&线性筛&欧拉函数&莫比乌斯函数&因数个数&约数个数和

    只会搬运YL巨巨的博客 积性函数 定义 积性函数:对于任意互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数. 完全积性函数:对于任意整数a和b有性质f(ab)=f(a)f(b)的数论函数 ...

  4. [模板] 积性函数 && 线性筛

    积性函数 数论函数指的是定义在正整数集上的实或复函数. 积性函数指的是当 \((a,b)=1\) 时, 满足 \(f(a*b)=f(a)*f(b)\) 的数论函数. 完全积性函数指的是在任何情况下, ...

  5. BZOJ4804 欧拉心算(莫比乌斯反演+欧拉函数+线性筛)

    一通套路后得Σφ(d)μ(D/d)⌊n/D⌋2.显然整除分块,问题在于怎么快速计算φ和μ的狄利克雷卷积.积性函数的卷积还是积性函数,那么线性筛即可.因为μ(pc)=0 (c>=2),所以f(pc ...

  6. [bzoj] 2694 Lcm || 莫比乌斯反演

    原题 定义整数a,b,求所有满足条件的lcm(a,b)的和: 1<=a<=A 1<=b<=B ∀n>1,n2†gcd(a,b)(即任意n>1,\(n^2\)不是gc ...

  7. BZOJ 2694: Lcm [莫比乌斯反演 线性筛]

    题意:求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m lcm(i,j)\ : gcd(i,j) 是sf 无平方因子数\) 无平方因子数?搞一个\(\mu(gcd( ...

  8. Bzoj 2818: Gcd 莫比乌斯,分块,欧拉函数,线性筛

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 3241  Solved: 1437[Submit][Status][Discuss ...

  9. $BZOJ$2818 $gcd$ 莫比乌斯反演/欧拉函数

    正解:莫比乌斯反演/欧拉函数 解题报告: 传送门$QwQ$ 一步非常显然的变形,原式=$\sum_{d=1,d\in prim}^{n}\sum_{i=1}^{n}\sum_{j=1}^{n}[gcd ...

随机推荐

  1. ArcGIS API for JavaScript(4.x)-加载天地图

    ArcGIS API for JavaScript(3.x)如何加载天地图<ArcGIS API for Javascript 加载天地图(经纬度投影) - 张凯强 - 博客园>这篇文章已 ...

  2. mysql 开放远程连接权限连不上

    1.my.cof配置了:bind-address=addr  或   skip-networking,需要注释 2.防火墙限制3306端口: iptables -L -n --line-numbers ...

  3. Kubernetes tutorial - K8S 官方入门教程

    tutorials 教程 kubectl 的命令手册 1 Creating a Cluster 1.1 Using Minikube to Create a Cluster Kubernetes Cl ...

  4. Fedora 26 安装搜狗拼音输入法 sogoupinyin

    Fcitx 官方 wiki Fcitx GitHub Arch wiki 上关于 Fcitx 的资料 故障排除可以参考这里 Fedora 中文社区 Fedora 中文社区软件源 Fcitx (Flex ...

  5. Minimum Cost 【POJ - 2516】【网络流最小费用最大流】

    题目链接 题意: 有N个商家它们需要货物源,还有M个货物供应商,N个商家需要K种物品,每种物品都有对应的需求量,M个商家每种物品都是对应的存货,然后再是K个N*M的矩阵表示了K个物品从供货商运送到商家 ...

  6. MySQL-极恶安装

    1.官网下载地址:https://dev.mysql.com/downloads/mysql/ 2.安装包下载后解压,并创建my.ini配置文件 内容如下,注意两个第三个#:MySQL的安装目录,第四 ...

  7. UVA1626 括号序列 Brackets sequence(区间dp)

    题目传送门(洛谷)   题目传送门(UVA) 解题思路 很显然是一个区间dp,当然记忆化搜索完全可以AC,这里说一下区间dp. 区间dp的重要特征就是需要枚举中间节点k 看一看这道题,用f[i][j] ...

  8. 12、numpy——数学函数

    NumPy 数学函数 NumPy 包含大量的各种数学运算的函数,包括三角函数,算术运算的函数,复数处理函数等. 1.三角函数 NumPy 提供了标准的三角函数:sin().cos().tan(). i ...

  9. 详解Twitter开源分布式自增ID算法snowflake(附演算验证过程)

    详解Twitter开源分布式自增ID算法snowflake,附演算验证过程 2017年01月22日 14:44:40 url: http://blog.csdn.net/li396864285/art ...

  10. ASE "黄金点游戏"

    问题定义 黄金点游戏是源于经济学家Richar Thaler构思的在1997年伦敦金融时报进行了一次公开竞猜活动.MSRA-ASE课程的第一次结对编程中,我们写了一个AI Bot来与大家玩儿这个游戏. ...