题意

设 $f(n)$ 为 $n=ab$ 的方案数,其中 $a,b$ 为无平方因子数。求 $\displaystyle  \sum_{i=1}^nf(i)$,$n \leq 2e7$。

分析

显然,可发现 $f = \mu ^2 * \mu ^2$.

即 $\displaystyle f(n) = \sum_{d | n} \mu^2(d) \mu^2(\frac{n}{d})$

那么可以这样化简目标式

$$\begin{aligned} & \sum_{i = 1}^{n} f(i) \\ =& \sum_{i = 1}^{n} \sum_{d | i} \mu^2 (d) \mu^2 (\frac{i}{d}) \\ =& \sum_{d = 1}^{n} \sum_{d | i}^{1\leq i \leq n} \mu^2(d) \mu^2(\frac{i}{d}) \\ = & \sum_{d = 1}^{n} \mu^2 (d) \sum_{i = 1}^{\lfloor \frac{n}{d} \rfloor} \mu^2 (i) \end{aligned}$$

那么重点在于预处理出 $\mu^2$ 的前缀和,然后整除分块一下就可以了。

这里预处理的复杂度为 $O(n)$(可以用这一结论 $\displaystyle \sum_{i=1}^n \mu (i)^2 = \sum_{i=1}^{\left \lfloor \sqrt n \right \rfloor}\mu (i)\left \lfloor \frac{n}{i^2} \right \rfloor$ 降至 $O(\sqrt n)$),单次询问的复杂度为 $O(\sqrt n)$

数组全用 long long 会MLE。

#include<bits/stdc++.h>
using namespace std; typedef long long ll;
const int maxn = 2e7 + ;
int p[maxn], flg[maxn], mu[maxn];
ll sum_mu[maxn];
int n; void init(int N) {
int tot = ;
mu[] = ;
for (int i = ; i <= N; ++i) {
if (!flg[i]) {
p[++tot] = i;
mu[i] = -;
}
for (int j = ; j <= tot && i * p[j] <= N; ++j) {
flg[i * p[j]] = ;
if (i % p[j] == ) {
mu[i * p[j]] = ;
break;
}
mu[i * p[j]] = -mu[i];
}
}
for (int i = ; i <= N; ++i)sum_mu[i] = sum_mu[i-] + mu[i]*mu[i];
} int main()
{
init(2e7);
int T;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
ll ans = ;
for(int l=, r;l <= n;l = r+)
{
r = n / (n/l);
ans += sum_mu[n/l] * (sum_mu[r] - sum_mu[l-]);
}
printf("%lld\n", ans);
}
return ;
}

参考链接:

1. http://www.cfzhao.com/2019/05/23/%E8%AE%A1%E8%92%9C%E5%AE%A2-a1956-sum/

2. 一道积性函数求和题(知乎)

2018 南京网络预赛Sum ——莫比乌斯反演的更多相关文章

  1. 2018 南京网络预赛Sum - 离线分段打表

    题意 设 $f(n)$ 为 $n=ab$ 的方案数,其中 $a,b$ 为无平方因子数. 例如,$f(6)=4$,因为 $6 = 1 \times 6 = 2 \times 3 = 3 \times 2 ...

  2. 2018 南京网络预赛Sum - 线性筛

    题意 链接 定义 $f(x)$ 为满足以下条件的有序二元组 $(a, b)$ 的方案数(即 $(a, b)$ 与 $(b, a)$ 被认为是不同的方案): $x= ab$ $a$ 和 $b$ 均无平方 ...

  3. acdream 1148 GCD SUM 莫比乌斯反演 ansx,ansy

    GCD SUM Time Limit: 8000/4000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) SubmitStatis ...

  4. hdu4746:2013杭州网络赛I 莫比乌斯反演

    题意: 有5000组询问,每组询问求有多少i,j满足i∈[1,n],j∈[1,m]且gcd(i,j)的质因子数目<=p. n,m<=500000 思路: 首先预处理出每个数的质因子数目分别 ...

  5. 2019年南京网络赛E题K Sum(莫比乌斯反演+杜教筛+欧拉降幂)

    目录 题目链接 思路 代码 题目链接 传送门 思路 首先我们将原式化简: \[ \begin{aligned} &\sum\limits_{l_1=1}^{n}\sum\limits_{l_2 ...

  6. ACM-ICPC 2018 南京赛区网络预赛 Sum

    A square-free integer is an integer which is indivisible by any square number except 11. For example ...

  7. ACM-ICPC 2018 南京赛区网络预赛Sum,线性筛处理积性函数

    SUM 题意:f(n)是n可以拆成多少组n=a*b,a和b都是不包含平方因子的方案数目,对于a!=b,n=a*b和n=b*a算两种方案,求∑i=1nf(i) 首先我们可以知道,n=1时f(1)=1, ...

  8. 计蒜客 30999 - Sum - [找规律+线性筛][2018ICPC南京网络预赛J题]

    题目链接:https://nanti.jisuanke.com/t/30999 样例输入258 样例输出814 题意: squarefree数是指不含有完全平方数( 1 除外)因子的数, 现在一个数字 ...

  9. 2018南京网络赛 - Skr 回文树

    题意:求本质不同的回文串(大整数)的数字和 由回文树的性质可知贡献只在首次进入某个新节点时产生 那么只需由pos和len算出距离把左边右边删掉再算好base重复\(O(n)\)次即可 位移那段写的略微 ...

随机推荐

  1. vue打包静态资源后显示空白及static文件路径报错

    1.打包之后打开dist的页面显示空白: 这个是打包项目比较常见的一个错误 改一下config下面的index.js中bulid模块导出的路径.因为打包后的index.html里边的内容都是通过scr ...

  2. [转帖]Linux运维工程师的十个基本技能点

    Linux运维工程师的十个基本技能点 https://cloud.tencent.com/developer/article/1115068   本人是Linux运维工程师,对这方面有点心得,现在我说 ...

  3. Java中常用的设计模式代码与理解

    Java中常用的设计模式代码与理解 一.单例模式 1.饿汉式 (太饿了,类加载的时候就创建实例) /** * 饿汉式单例模式 */ public class HungrySingleInstance ...

  4. visual studio code编辑python文件

    visual studio code 安装.通过360软件管家,查找visual studio code 下载安装即可 设置visual studio code为中文 打开进入软件,Ctrl + Sh ...

  5. BC26模组UDP调试

    BC26模组调试 数据上报AT流程 [15:33:46.819]收←◆ F1: 0000 0000 V0: 0000 0000 [0001] 00: 0006 000C 01: 0000 0000 U ...

  6. MySQL容量规划和性能测试

    性能容量关键指标: 每秒tps,峰值tps 基础数据量,日均增长数据量 最大连接数 内存分配 IOPS 重点关注指标: 业务指标: 每秒并发用户请求.每秒订单数.用户请求响应时长 折算成性能指标: q ...

  7. Vue.js 2.x 混入

    Vue.js 2.x mixins 混入 混入(mixins)是一种分发vue组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项.当组件使用混入对象时,所有混入对象的选项将被混入该组件本身 ...

  8. java中对List中的元素进行排序

    Collections对List集合中的数据进行排序 有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到 Java中提供的对集合进行操作的工具类Collections,其中的sort方法 N ...

  9. MySQL库的相关操作

    再熟悉一下Mysql库.表.记录的基本操作. 库 增 create database userinfo1 charset utf8; 查 show databases; show create dat ...

  10. echarts使用结合时间轴timeline动态刷新案例

    1.echarts简介 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fire ...