正解:莫比乌斯反演

解题报告:

传送门!

先考虑证明一个结论,$d_{i\cdot j}=\sum_{p|i}\sum_{q|j}[gcd(p,q)==1]$

看起来就很对的样子,但还是证下趴$QwQ$

考虑分解质因数,设$i=p_{1}^{a_{1}}\cdot p_{2}^{a_{2}}\cdot p_{3}^{a_{3}},j=p_{1}^{b_{1}}\cdot p_{2}^{b_{2}}\cdot p_{3}^{b_{3}}$,则$i\cdot j=p_{1}^{a_{1}+b_{1}}\cdot p_{2}^{a_{2}+b_{2}}\cdot p_{3}^{a_{3}+b_{3}}$,则有$d_{i\cdot j}=\prod (a_{i}+b_{i}+1)$

于是记$p_{i}$的贡献为$(a_{i}+b_{i}+1)$,考虑结论右侧的一对取值,设$t1,t2$互质且都不含质因数$p_{i}$,则$(t_{1}\cdot p_{i}^{a_{i}},b_{i}),(t_{1}\cdot p_{i}^{a_{i}-1},b_{i}),...,(t_{1},b_{1}\cdot p_{i}^{b_{i}})$都会有1的贡献,总共就是$a_{i}+b_{i}+1$的贡献,得证!

欧克证完结论就要考虑公式变形了鸭$QwQ$

$\sum_{i=1}^{n}\sum_{j=1}^{m}d_{i\cdot j}=\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{p|i}\sum_{q|j}[gcd(p,q)==1]$

考虑每一个数对$t_{1},t_{2}$会被枚举多少次?显然$t_{1}$会被枚举$\frac{n}{t_{1}}$次,$t_{2}$会被枚举$\frac{m}{t_{2}}$次

于是继续变形得,原式=$\sum_{t_{1}=1}^{n}\sum_{t_{2}=1}^{m}\frac{n}{t_{1}}\cdot \frac{m}{t_{2}}\cdot [gcd(t_{1},t_{2})==1]$

这时候考虑到莫比乌斯函数的性质,$\left\{\begin{matrix}\sum_{d|n}\mu(d)=0,n>1\\ \sum_{d|n}\mu(d)=1,n=1\end{matrix}\right.$,于是原式可以化为,$\sum_{t_{1}=1}^{n}\sum_{t_{2}=1}^{m}\frac{n}{t_{1}}\cdot \frac{m}{t_{2}}\cdot \sum_{d|gcd(t_{1},t_{2})}\mu(d)=\sum_{t_{1}=1}^{n}\sum_{t_{2}=1}^{m}\frac{n}{t_{1}}\cdot \frac{m}{t_{2}}\cdot \sum_{d|t_{1}\text{&}d|t_{2}}\mu(d)$

然后按照一般的套路来说这里就差不多要考虑变换下$\sum$的顺序了

这儿就考虑把$\sum mu(d)$提到最前面,不难想到式子就变成了,$\sum \mu(d)\cdot \sum_{t_{1}=1}^{\frac{n}{d}}\sum_{t_{2}=1}^{\frac{m}{d}}\frac{n}{t_{1}\cdot d}\cdot \frac{m}{t_{2}\cdot d}$

嗷这样儿还不够,最后还要再,变下形$QwQ$,$\sum_{d=1}^{min(m,n)} \mu(d)\cdot \sum_{t_{1}=1}^{\frac{n}{d}}\frac{n}{t_{1}\cdot d}\cdot \sum_{t_{2}=1}^{\frac{m}{d}}\frac{m}{t_{2}\cdot d}$,发现对于$\sum_{t_{1}=1}^{\frac{n}{d}}\frac{n}{t_{1}\cdot d}$这样儿一个式子,其实$\frac{n}{d}$是固定的,设$x=\frac{n}{d}$,于是原式变为$\sum_{t_{1}=1}^{d}\frac{d}{i}$
考虑预处理一个$g(d)=\sum_{t_{1}=1}^{d}\frac{d}{i}$,于是答案式变为$\sum_{d=1}^{min(m,n)} \mu(d)\cdot g(\frac{n}{d})\cdot g(\frac{m}{d})$

然后到这儿依然没有结束昂嘤嘤嘤,,,

考虑$g(d)$怎么预处理鸭$QAQ$

显然直接暴力地$O(n^{2})$处理是不可取的$QwQ$

于是考虑这个所谓$g(d)$的意义是啥昂$QwQ$

观察$g(d)$的表达式,不难发现$g(x)$可以理解为$\sum_{i=1}^{x}$$x$范围内为$i$的倍数的数的数量之和,也就是题目中的$d(x)$的前缀和,于是现在就变成了线性求$d(x)$

我的方法是直接枚举质因数,然后用类似埃氏筛的方法,对质因数的倍数直接乘指数+1即可$QwQ$

然后还有就是,莫比乌斯反演的话,数论分块是基本素养了趴,,,?太套路了不说了$QwQ$

$over$

啊记得开$ll$鸭

真·$over$

#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdio>
#include<vector>
#include<map>
using namespace std;
#define il inline
#define int long long
#define fi first
#define sc second
#define gc getchar()
#define mp make_pair
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i) const int N=5e4+;
int g[N],sum[N],pr[N],pr_cnt,miu[N];
bool is_prim[N]; il int read()
{
ri x=;rb y=;rc ch=gc;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il void pre_g()
{
rp(i,,N-)g[i]=;sum[]=;
rp(i,,N-)
{
if(!is_prim[i])g[i]=g[i]<<;sum[i]=sum[i-]+g[i];
if(!is_prim[i]){rp(j,,(N-)/i){ri tmp=,tmp_j=j;while(j%i==)++tmp,j/=i;j=tmp_j;g[i*j]*=(tmp+);}}
}
}
il void pre_mu()
{
miu[]=;
rp(i,,N-)
{
if(!is_prim[i])miu[i]=-,pr[++pr_cnt]=i;
rp(j,,pr_cnt){if(pr[j]*i>N-)break;is_prim[pr[j]*i]=;if(!(i%pr[j])){miu[i*pr[j]]=;break;}else miu[i*pr[j]]=-miu[i];}
}
rp(i,,N-)miu[i]+=miu[i-];
} main()
{
freopen("3327.in","r",stdin);freopen("3327.out","w",stdout);
pre_mu();pre_g();ri T=read();
while(T--)
{ri n=read(),m=read(),ret=,j;if(n>m)swap(n,m);for(ri i=;i<=n;i=j+){j=min(n/(n/i),m/(m/i));ret+=(miu[j]-miu[i-])*sum[n/i]*sum[m/i];}printf("%lld\n",ret);}
return ;
}

洛谷$P$3327 约数个数和 $[SDOI2015]$ 莫比乌斯反演的更多相关文章

  1. 洛谷P3327 [SDOI2015]约数个数和 【莫比乌斯反演】

    题目 设d(x)为x的约数个数,给定N.M,求\(\sum_{i = 1}^{N} \sum_{j = 1}^{M} d(ij)\) 输入格式 输入文件包含多组测试数据.第一行,一个整数T,表示测试数 ...

  2. 洛谷P3327 [SDOI2015]约数个数和(莫比乌斯反演)

    传送门 公式太长了……我就直接抄一下这位大佬好了……实在懒得打了 首先据说$d(ij)$有个性质$$d(ij)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]$$ 我们所求的答案为$ ...

  3. 【BZOJ3994】约数个数和(莫比乌斯反演)

    [BZOJ3994]约数个数和(莫比乌斯反演) 题面 求\[\sum_{i=1}^n\sum_{j=1}^md(ij)\] 多组数据\((<=50000组)\) \(n,m<=50000\ ...

  4. BZOJ_3994_[SDOI2015]约数个数和_莫比乌斯反演

    BZOJ_3994_[SDOI2015]约数个数和_莫比乌斯反演 Description  设d(x)为x的约数个数,给定N.M,求   Input 输入文件包含多组测试数据. 第一行,一个整数T,表 ...

  5. LOJ #2185 / 洛谷 P3329 - [SDOI2015]约数个数和(莫比乌斯函数)

    LOJ 题面传送门 / 洛谷题面传送门 题意: 求 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^md(ij)\),\(d(x)\) 为 \(x\) 的约数个数. \( ...

  6. P3327/bzoj3994 [SDOI2015]约数个数和(莫比乌斯反演)

    P3327 [SDOI2015]约数个数和 神犇题解(转) 无话可补 #include<iostream> #include<cstdio> #include<cstri ...

  7. BZOJ3994:约数个数和(莫比乌斯反演:求[1,N]*[1,M]的矩阵的因子个数)

    Description  设d(x)为x的约数个数,给定N.M,求   Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. Outpu ...

  8. 【BZOJ 3994】3994: [SDOI2015]约数个数和(莫比乌斯反演)

    3994: [SDOI2015]约数个数和 Description  设d(x)为x的约数个数,给定N.M,求   Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接 ...

  9. 「BZOJ 3994」「SDOI 2015」约数个数和「莫比乌斯反演」

    题意 设\(d(x)\)为\(x\)的约数个数,求\(\sum_{i=1}^{n}\sum_{j=1}^{m}d(ij)\). 题解 首先证个公式: \[d(ij) = \sum_{x|i}\sum_ ...

随机推荐

  1. Android Http实现文件的上传和下载

    最近做一个项目,其中涉及到文件的上传和下载功能,大家都知道,这个功能实现其实已经烂大街了,遂.直接从网上荡了一堆代码用,结果,发现网上的代码真是良莠不齐,不是写的不全面,就是有问题,于是自己重新整理了 ...

  2. 从开源小白到 Apache Member,我的成长之路

    我们走过的每一步路,都会留下印记,越坚实,越清晰. 近日,Apache 软件基金会(ASF)官方 Blog 宣布全球新增 40 位 Apache Member,张乎兴有幸成为其中一位. 目前,全球共有 ...

  3. HZOJ 星际旅行

    正解欧拉路,其实看完题解还是挺简单的,由于对欧拉路这种东西没怎么接触过,所以考试时没想出来,知识还是有漏洞啊. 另外这题的题解写的也不是很清楚(可能大佬作者觉得这是一道送分题……),首先判断联通(注意 ...

  4. Browse W3C's Open Source Software

    https://www.w3.org/Status.html Browse W3C's Open Source Software Amaya - a Web browser/editor First ...

  5. [kuangbin带你飞]专题九 连通图C - Critical Links UVA - 796

    这道题就是要求桥的个数. 那么桥相应的也有判定的定理: 在和u相邻的节点中,存在一个节点是最小的时间戳都比 当前u的访问次序要大,也就是说这个点是只能通过果u到达,那么 他们之间相邻的边就是的桥 #i ...

  6. 深入Java线程管理(一):线程的实现方式

    Java的线程实现方式一共有三种,继承Thread.实现Runable接口,实现Callable接口.不过实现Runnable接口与实现Callable接口的方式基本相同,只是Callable接口里定 ...

  7. 用复制方式创建表 Create Table tbname as select * from user.tab where ...

    用复制方式创建表 Create Table tbname as select * from user.tab where ...

  8. 基于ThinkPHP与阿里大于的PHP短信验证功能

    https://blog.csdn.net/s371795639/article/details/53381274 PHP阿里大鱼短信验证 第一步 登陆阿里大于注册账号,在用户管理中心创建应用,确定A ...

  9. Linux 查看iptables状态-重启

    iptables 所在目录 : /etc/sysconfig/iptables # service iptables status #查看iptables状态 # service iptables r ...

  10. [转载]Eclipse luna tomcat 控制台 中文乱码

    http://hahalzb.iteye.com/blog/709109 今天做S2SH集成的例子,所有该设置的地方都设置成了UTF-8,包括tomcat的配置文件server.xml.web.xml ...