Time Limit: 10 Sec Memory Limit: 512 MB

Description

​ 有一张\(n×m\)的数表,其第i行第j列(\(,1 \le i \leq n,1 \le j \le m\))的数值为
能同时整除\(i\)和\(j\)的所有自然数之和。给定\(a\),计算数表中不大于\(a\)的数之和。

Input

​ 输入包含多组数据。
​ 输入的第一行一个整数\(Q\)表示测试点内的数据组数,接下来Q行,每行三个整数\(,,n,m,a\)(\(|a| < =10^9\))描述一组数据。

Output

​ 对每组数据,输出一行一个整数,表示答案模\(2^{31}\)的值。

Sample Input

​ 2
​ 4 4 3
​ 10 10 5

Sample Output

​ 20
​ 148

HINT

​ \(1 \le n,m \le 10^5 \\ 1 \le Q \le 2×10^4\)

Solution

​ 先忽略\(a\)的条件。

​ 令\(f(n)\)表示\(n\)的所有约数之和, \(sum(x)\)表示\(且x=gcd(i,j),1\le i \le n且1\le j \le m\)的数对数量.

​ 按照之前的反演,\(sum(x)=\sum\limits_{x|d}\mu(\frac dx)\lfloor\frac nd\rfloor\lfloor\frac md\rfloor=\sum\)
\[
\begin{aligned}
ans&=\sum_{i=1}^n\sum_{j=1}^m\sum_{d|i且d|j}d\\
&=\sum_{i=1}^n\sum_{j=1}^mf(gcd(i,j))\\
&=\sum_{d=1}^{min(n,m)}f(d)sum(d)\\
&=\sum_{d=1}^{min(n,m)}f(d)\sum_{x|d}\mu(\frac dx)\lfloor\frac nd\rfloor\lfloor\frac md\rfloor\\
&=\sum_{d=1}^{min(n,m)}f(d)\sum_{k=1}^{\lfloor min(n,m)/d\rfloor}\mu(\frac {kx}x)\lfloor\frac n{kx}\rfloor\lfloor\frac m{kx}\rfloor\\
&=\sum_{T=1}^{min(n,m)}\lfloor\frac nT\rfloor\lfloor\frac mT\rfloor\sum_{d|T}f(d)\mu(\frac Td)\\
&=\sum_{T=1}^{min(n,m)}\lfloor\frac nT\rfloor\lfloor\frac mT\rfloor g(T) &令g(x)=\sum_{d|x}f(d)\mu(\frac xd)
\end{aligned}
\]

​ 其实\(g(x)\)是可以暴力求解的...因为\(x\)的因数个数不是很多。但是我们不能直接算完,因为有\(a\)的限制。由此要引入树状数组。

​ 回头看\(a\)的条件,从第三行等式来看,只有\(d\leq a\)的\(f(d)\)才能有贡献。

​ 我们用一个树状数组来维护\(g(x)\)的前缀和,那么对于询问,按照\(a\)排序,将所有\(x\le a\)的\(f(x)\),枚举\(x|y\)的\(y\),更新\(g(y)+=f(x)\mu(\frac yx)\)。

​ 这样按照分块的套路求解\(ans\)即可.

f函数求解

​ \(f(x)=\sum\limits_{d|x}d\)

​ \(f(x)\)是积性函数,可以用线性筛求解:

​ (1) \(x\)是质数时,\(f(x)=1+x\)

​ (2)循环\(i\)与\(p\)筛到\(x\), \(x\)=\(p*i\).

​ 若\(i\nmid p\),则\(i\)与\(p\)互质,那么\(f(x)=f(i)f(p)=f(i)*(p+1)\).

​ 若\(i|p\),记\(i\)去除所有\(p\)因子后的数为\(a\). 则\(f(x)=f(i)*p+f(a)\).

​ 记\(i=p_1^{q_1}p_2^{q_2}...p_k^{q_k}\),则\(x=p_1^{q_1}p_2^{q_2}...p_{loc}^{q_{loc}+1}...p_k^{q_k}\),\(a=p_1^{q_1}..p_{loc-1}^{q_{loc-1}}p_{loc+1}^{q_{loc}+1}...p_k^{q_k}\).不严谨地,这里\(p_{loc}\)和\(q_{loc}\)分别代表的是\(p\),与\(p\)在质因数分解中的指数。
\[
\begin{aligned}
f(i)*p&=(1+p1+...+p1^{q1})...(1+p_{loc}+...+p_{loc}^{q_{loc}})...(1+p_k+...+p_k^{q_k})*p\\
&=(p_{loc}+p_{loc}^2+..+p_{loc}^{q_{loc}+1})f(a)\\
\therefore f(i)*p&+f(a)=(1+p_{loc}+p_{loc}^2+...+p_{loc}^{q_{loc}+1})f(a)=f(x)
\end{aligned}
\]

【BZOJ3529】【SDOI2014】 数表的更多相关文章

  1. [bzoj3529][Sdoi2014]数表_树状数组_莫比乌斯反演

    数表 bzoj-3529 Sdoi-2014 题目大意:n*m的数表,第i行第j列的数是同时整除i和j的所有自然数之和.给定a,求数表中所有不超过a的和. 注释:$1\le n,m \le 10^5$ ...

  2. BZOJ3529 [Sdoi2014]数表 【莫比乌斯反演】

    3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2151 Solved: 1080 [Submit][Status ...

  3. bzoj千题计划205:bzoj3529: [Sdoi2014]数表

    http://www.lydsy.com/JudgeOnline/problem.php?id=3529 有一张n*m的数表,其第i行第j列(1 < =i < =n,1 < =j & ...

  4. BZOJ3529 [Sdoi2014]数表【莫比乌斯反演】

    Description 有一张 n×m 的数表,其第 i 行第 j 列(1 <= i <= n, 1 <= j <= m)的数值为 能同时整除 i 和 j 的所有自然数之和.给 ...

  5. 莫比乌斯反演套路二--(n/d)(m/d)给提出来--BZOJ3529: [Sdoi2014]数表

    一个数表上第i行第j列表示能同时整除i和j的自然数,Q<=2e4个询问,每次问表上1<=x<=n,1<=y<=m区域内所有<=a的数之和.n,m<=1e5,a ...

  6. BZOJ3529: [Sdoi2014]数表(莫比乌斯反演,离线)

    Description 有一张 n×m 的数表,其第 i 行第 j 列(1 <= i <= n, 1 <= j <= m)的数值为 能同时整除 i 和 j 的所有自然数之和.给 ...

  7. BZOJ3529: [Sdoi2014]数表

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3529 挺恶心的数论TAT... 设f[i]是i的约数和,这个可以nln(n)扫出来. ans= ...

  8. bzoj3529: [Sdoi2014]数表 莫比乌斯反演

    题意:求\(\sum_{i=1}^n\sum_{j=1}^nf(gcd(i,j))(gcd(i,j)<=a),f(x)是x的因子和函数\) 先考虑没有限制的情况,考虑枚举gcd为x,那么有\(\ ...

  9. BZOJ3529: [Sdoi2014]数表(莫比乌斯反演 树状数组)

    题意 题目链接 Sol 首先不考虑\(a\)的限制 我们要求的是 \[\sum_{i = 1}^n \sum_{j = 1}^m \sigma(gcd(i, j))\] 用常规的套路可以化到这个形式 ...

  10. 题解【bzoj3529 [SDOI2014]数表】

    Description \(T\) 组询问,定义 \(F(n)=\sum\limits_{d|n}d\).每次给出 \(n,m,a\) 求 \[\sum\limits_{i=1,j=1,F(\gcd( ...

随机推荐

  1. ECLIPS-S测井系统下的仪器挂接 [CV模块]

    常见简写 简写 全拼 含义 CV Calibration and Verification 刻度和校验 CP Primary Calibration 主刻度 VP Primary Verify 主校验 ...

  2. JavaScript之图片懒加载的实现

    图片懒加载指的是在浏览过程中随着需要才被加载出来,例如某宝上面浏览商品时,会伴随很多的图片,如果一次全部加载出来的话,显然资源有些浪费,并且加载速度也会相对降低,那么懒加载的实现很重要.即随着浏览翻阅 ...

  3. Servlet--传参和接参

    OK,现在基本的Servlet接口和常用类都整理的差不多的,本篇博客开始整理Servlet和页面的交互. 1,接参 以下几个常用的方法: getParameter public String getP ...

  4. Eclipse设置代码自动提示

    Eclipse只需几步简单的设置就可以像idea那样代码自动提示了,喜欢的小伙伴可以赶紧动手设置,提升效率. 第一步:打开Eclipse --> Window --> Preference ...

  5. mysql5.7安装配置,常用命令,常见问题

    1.安装配置 参考:http://www.cnblogs.com/Fiona20170420/p/6738185.html 1. 下载 2. 解压缩 3. 添加path环境变量,路径指向mysql所在 ...

  6. struts2.xml的配置问题

    1.<package namespace="/"></package> namespace决定访问action的路径: 如果省略,将代表任意路径: 2.&l ...

  7. 锐捷配置telnet

    .组网需求 通过Telnet功能远程登录管理设备.   二.组网拓扑   三.配置要点 1.需要给交换机配置一个管理IP,如果PC与交换机不是同一个网段,需要给交换机配置一个默认网关 2.需要配置一个 ...

  8. [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.10 梯度消失和梯度爆炸 当训练神经网络,尤其是深度神经网络时,经常会出现的问题是梯度消失或者梯度爆炸,也就是说当你训练深度网络时,导数或坡 ...

  9. snowflake分布式唯一id c#实现

    snowflake算法 snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID.其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心, ...

  10. bzoj 4813: [Cqoi2017]小Q的棋盘 [树形背包dp]

    4813: [Cqoi2017]小Q的棋盘 题意: 某poj弱化版?树形背包 据说还可以贪心... #include <iostream> #include <cstdio> ...