洛谷P3327 - [SDOI2015]约数个数和
Description
共\(T(T\leq5\times10^4)\)组数据。给出\(n,m(n,m\leq5\times10^4)\),求$$\sum_{i=1}n\sum_{j=1}m\sigma_0(ij)$$
Solution
首先有结论:\(\sigma_0(xy)=\sum_{d_1|x}\sum_{d_2|y}[gcd(d_1,d_2)=1]\)。下面先证明一下这个结论。
将\(x,y\)分解质因数,得到\(x=\prod_{i=1}^kp_i^{a_i}\),\(y=\prod_{i=1}^kp_i^{b_i}\)。那么若\(gcd(d_1,d
_2)=1\),则说明对于一个质因数\(p_i\),其只存在于\(d_1,d_2\)之中的零或一个中。若存在于\(d_1\)中则有\(a_i\)种可能性,若存在于\(d_2\)中则有\(b_i\)种可能性,再加上都不存在的一种共计\(a_i+b_i+1\)种。那么共有\(\prod_{i=1}^k(a_i+b_i+1)\)对互质的\((d_1,d_2)\),而这个数恰等于\(\sigma_0(xy)\)。
于是就可以正常推导啦。
ans &= \sum_{i=1}^n \sum_{j=1}^m \sum_{d_1|i} \sum_{d_2|j}[gcd(d_1,d_2)=1] \\
&= \sum_{d_1=1}^{+∞} \sum_{d_2=1}^{+∞} \sum_{d_1|i}^n \sum_{d_2|j}^m [gcd(d_1,d_2)=1] \\
&= \sum_{d_1=1}^{+∞} \sum_{d_2=1}^{+∞} ⌊\frac{n}{d_1}⌋ ⌊\frac{m}{d_2}⌋ \sum_{d_3|gcd(d_1,d_2)} \mu(d_3) \\
&= \sum_{d_3=1}^{+∞} \mu(d_3) \sum_{d_3|d_1} \sum_{d_3|d_2} ⌊\frac{n}{d_1}⌋ ⌊\frac{m}{d_2}⌋ \\
&= \sum_{d_3=1}^{+∞} \mu(d_3) \sum_{t_1=1}^{+∞} ⌊\frac{⌊\frac{n}{d_3}⌋}{t_1}⌋ \sum_{t_2=1}^{+∞} ⌊\frac{⌊\frac{m}{d_3}⌋}{t_2}⌋ \\
\end{align*}$$ $O(n\sqrt n)$预处理出$f(x)=\sum_{i=1}^x ⌊\dfrac{x}{i}⌋$,就有$$ans=\sum_{d=1}^{+∞} \mu(d)f(⌊\dfrac{n}{d}⌋)f(⌊\dfrac{m}{d}⌋)$$ 就可以在$O(\sqrt n)$的时间内求解啦。
##Code
```cpp
//[SDOI2015]约数个数和
#include <algorithm>
#include <cstdio>
using namespace std;
typedef long long lint;
inline char gc()
{
static char now[1<<16],*s,*t;
if(s==t) {t=(s=now)+fread(now,1,1<<16,stdin); if(s==t) return EOF;}
return *s++;
}
inline int read()
{
int x=0; char ch=gc();
while(ch<'0'||'9'<ch) ch=gc();
while('0'<=ch&&ch<='9') x=x*10+ch-'0',ch=gc();
return x;
}
const int N=5e4+10;
int pCnt,pr[N]; bool pNot[N];
int mu[N],pre[N]; int f[N];
void init(int n)
{
mu[1]=1;
for(int i=2;i<=n;i++)
{
if(!pNot[i]) pr[++pCnt]=i,mu[i]=-1;
for(int j=1;j<=pCnt;j++)
{
int x=i*pr[j]; if(x>n) break;
pNot[x]=true;
if(i%pr[j]) mu[x]=-mu[i];
else {mu[x]=0; break;}
}
}
for(int i=1;i<=n;i++) pre[i]=pre[i-1]+mu[i];
for(int x=1;x<=n;x++)
for(int L=1,R;L<=x;L=R+1)
{
int v=x/L; R=x/v;
f[x]+=(R-L+1)*v;
}
}
int main()
{
int task=read(); init(5e4);
while(task--)
{
int n=read(),m=read();
if(n>m) swap(n,m);
lint ans=0;
for(int L=1,R;L<=n;L=R+1)
{
int v1=n/L,v2=m/L; R=min(n/v1,m/v2);
ans+=1LL*(pre[R]-pre[L-1])*f[v1]*f[v2];
}
printf("%lld\n",ans);
}
return 0;
}
```\]
洛谷P3327 - [SDOI2015]约数个数和的更多相关文章
- 洛谷 P3327 [SDOI2015]约数个数和 || Number Challenge Codeforces - 235E
https://www.luogu.org/problemnew/show/P3327 不会做. 去搜题解...为什么题解都用了一个奇怪的公式?太奇怪了啊... 公式是这样的: $d(xy)=\sum ...
- 洛谷P3327 [SDOI2015]约数个数和 【莫比乌斯反演】
题目 设d(x)为x的约数个数,给定N.M,求\(\sum_{i = 1}^{N} \sum_{j = 1}^{M} d(ij)\) 输入格式 输入文件包含多组测试数据.第一行,一个整数T,表示测试数 ...
- 洛谷P3327 [SDOI2015]约数个数和(莫比乌斯反演)
题目描述 设d(x)为x的约数个数,给定N.M,求 \sum^N_{i=1}\sum^M_{j=1}d(ij)∑i=1N∑j=1Md(ij) 输入输出格式 输入格式: 输入文件包含多组测试数据.第 ...
- 洛谷P3327 [SDOI2015]约数个数和(莫比乌斯反演)
传送门 公式太长了……我就直接抄一下这位大佬好了……实在懒得打了 首先据说$d(ij)$有个性质$$d(ij)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]$$ 我们所求的答案为$ ...
- LOJ #2185 / 洛谷 P3329 - [SDOI2015]约数个数和(莫比乌斯函数)
LOJ 题面传送门 / 洛谷题面传送门 题意: 求 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^md(ij)\),\(d(x)\) 为 \(x\) 的约数个数. \( ...
- P3327 [SDOI2015]约数个数和 莫比乌斯反演
P3327 [SDOI2015]约数个数和 莫比乌斯反演 链接 luogu 思路 第一个式子我也不会,luogu有个证明,自己感悟吧. \[d(ij)=\sum\limits_{x|i}\sum\li ...
- Luogu P3327 [SDOI2015]约数个数和
又是恶心的莫比乌斯反演,蒟蒻我又是一脸懵逼的被CXR dalao狂虐. 题目要求\(ans=\sum_{i=1}^n \sum_{j=1}^m d(ij)\),其中\(d(ij)\)表示数\(x\)的 ...
- 并不对劲的bzoj3994:loj2185:p3327[SDOI2015]约数个数和
题目大意 设d(x)为x的约数个数,\(t\)组询问,给定\(n,m\)(\(t,m,n\leq5*10^4\)),求$ \sum^n_{i=1}\sum^m_{j=1}d(i*j)$ 题解 假设\( ...
- luogu P3327 [SDOI2015]约数个数和 莫比乌斯反演
题面 我的做法基于以下两个公式: \[[n=1]=\sum_{d|n}\mu(d)\] \[\sigma_0(i*j)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]\] 其中\(\ ...
随机推荐
- 源文件名长度大于系统支持的长度,无法删除,java主方法执行方式删除
import java.io.File; /** * @author 海盗船长 * 2017年2月14日11:24:26 */ public class DeleteFiles { public st ...
- CentOS7.2+MySQL5.7_ yum源方式_ 安装配置教程
1)访问mysql官方网站 #访问网站 https://dev.mysql.com/downloads/file/?id=470281 2)下载安装包到linux #进入文件存放路径 cd /usr/ ...
- codevs 2277 爱吃皮蛋的小明(水题日常)
时间限制: 1 s 空间限制: 32000 KB 题目等级 : 白银 Silver 题目描述 Description 小明特别爱吃蛋,特别是皮蛋.他一次可以吃一个蛋或者两个蛋(整个吞下去),而且他 ...
- sourcegrid统计报表画法以及EXCEL导出内容代码完全版
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- urllib基础-请求对象request
简单的案例-爬取百度首页 from urllib import request ''' 爬取百度首页 ''' # 确定爬去目标 base_url = 'http://www.baidu.com' # ...
- 【单片机实验】6LED静态串行显示
实验三 6LED静态串行显示一.实验目的1.掌握数字.字符转换成由数码管显示的八段码的软件译码方法及译码过程:2.静态显示的原理和相关程序的编写. 二.实验电路静态显示 电路如图3-2所示.显示器由6 ...
- 【转】将Eclipse中的CTRL+K搬到IDEA中
https://my.oschina.net/sprieo/blog/224838 IDEA的该功能是CTRL+F3,行为是获取当前光标位置的单词然后调用搜索.只需要按CTRL+F3一次,就可以实现C ...
- (4)JSTL的SQL标签库
jstl的SQL标签库 SQL tag Library中的标签用来提供在 JSP 页面中可以与数据库进行交互的功能Database access标签库有以下6组标签来进行工作: <sql:set ...
- WinPcap过滤串表达式的语法
注意:这篇文档取自tcpdump的指南.原始的版本 www.tcpdump.org 找到. wpcap的过滤器是以已声明的谓词语法为基础的.过滤器是一个ASCII字符串,它包含了一个过滤表达式.p ...
- html5/css3响应式页面开发总结
一,自适应和响应式的区别 自适应是一套模板适应所有终端,但每种设备上看到的版式是一样的,俗称宽度自适应. 响应式一套模板适应所有终端,但每种设备看到的版式可以是不一样的. 虽然响应式/自适应网页设计会 ...