莫比乌斯反演推论

如果

那么

YY 的 GCD

表示是否是质数。求

多组询问,

原式为

由于大多数项都是 0,因此只需要预处理不是 0 的项,再做一个前缀和即可。

代码

LOJ6686 Stupid GCD

首先可以转化为枚举

第一部分

化简后面的部分:

那么可以得到

这显然可以分块了。

第二部分

那么可以得到

于是原式即为

两个部分使用杜教筛处理的前缀和即可。时间复杂度

代码

NOI2016 循环之美

第一部分

对于,我们暴力求一下即可。

原式化为

第二部分

后面的做分块,考虑算前面的前缀和。设

递归下去即可,边界

代码

Luogu5348 密码解锁

已知

第一部分

由莫比乌斯反演推论可以得到

第二部分

考虑把这个和式做一个递归:

第三部分

边界为

我们考虑的贡献。当且仅当不含平方及以上的因子时,,否则

因此我们要求中无平方因子的数的个数。那么考虑容斥,用整体减掉含有平方因子的数:

是容斥系数。注意在实现的时候不一定要直接前缀和。因为只有在无重复因子的时候才有值,因此可以 DFS。

原式为。计算即可。复杂度能过。

代码

HDU4944 FSF’s game

多组数据,

第一部分

。那么可以套路反演得到

那么我们做一个的前缀和就得到了。现在原式化简为了

直接计算可以做到的复杂度,但不够快。

第二部分

我们考虑计算。考虑枚举,然后枚举,计算对哪些有贡献。对于相同的贡献,显然有贡献的是一段长度为的区间(在末端长度小于等于)。因此差分一下,把区间加转化为单点加。然后做完后前缀和回来即可。

预处理的时间是调和级数。因此总复杂度

代码