莫比乌斯

莫比乌斯反演学习笔记

天大地大妈咪最大 提交于 2020-03-20 04:39:45
余数求和 对于任意整数 \(x\in[1,n]\) 设 \(g(x)=\lfloor\frac{k}{\lfloor\frac{k}{x}\rfloor}\rfloor\) \(\because f(x)=\frac{k}{x}\) 单调递减 又 \((x)=\lfloor\frac{k}{\lfloor\frac{k}{x}\rfloor}\rfloor\geq\lfloor\frac{k}{(\frac{k}{x})}\rfloor=x\) \(\therefore \lfloor\frac{k}{g(x)}\rfloor\leq\lfloor\frac{k}{x}\rfloor\) \(\because \lfloor\frac{k}{g(x)}\rfloor\geq\lfloor\frac{k}{(\frac{k}{\lfloor\frac{k}{x}\rfloor})}\rfloor=\lfloor\frac{k}{k}\lfloor\frac{k}{x}\rfloor\rfloor=\lfloor\frac{k}{x}\rfloor\) \(\therefore \lfloor\frac{k}{g(x)}\rfloor=\lfloor\frac{k}{x}\rfloor\) 综上得,对于 \(i\in[x,\lfloor\frac{k}{\lfloor\frac{k}

莫比乌斯反演

懵懂的女人 提交于 2020-03-08 22:12:57
莫比乌斯函数 求单个莫比乌斯函数 O(sqrt(n)) ll getu(ll x) { ll v = 1; for (int i = 2; i * i <= x; i++) { if (x % i == 0) { v = -v, x /= i; if (x % i == 0) return 0; } } if (x != 1) v = -v; return v; } View Code 线性筛莫比乌斯函数 O(n) // 莫比乌斯函数线性筛 // 同时求出素数表 int prime[maxn], prime_tot; int is_prime[maxn]; int mu[maxn]; void pre_calc(int lim) { mu[1] = 1; for (int i = 2; i <= lim; i++) { if (!is_prime[i]) { prime[++prime_tot] = i; mu[i] = -1; } for (int j = 1; j <= prime_tot; j++) { if (i * prime[j] > lim) break; is_prime[i * prime[j]] = 1; if (i % prime[j] == 0) { mu[i * prime[j]] = 0; break; } else mu[i * prime[j]] =

初探莫比乌斯反演

泪湿孤枕 提交于 2020-03-01 19:26:24
莫比乌斯反演的题目大多可以使用莫比乌斯函数性质求出 莫比乌斯函数性质就是 \([n=1]=\displaystyle \sum _{i|n}\mu(i)\) 比如说你要求 \(\displaystyle \sum _{i=1}^{n}\displaystyle \sum _{j=1}^{m}gcd(i,j)\) 其中 \(n<m\) 你可以先枚举gcd \(\displaystyle \sum _{d=1}^{n}d\displaystyle \sum _{i=1}^{n}\displaystyle \sum _{j=1}^{m}[gcd(i,j)=d]\) 考虑将 \(i=i*d,j=j*d\) 这里说的不详细可以看下面 \(\displaystyle \sum _{d=1}^{n}d\displaystyle \sum _{i=1}^{\lfloor \frac{n}{d}\rfloor}\displaystyle \sum _{j=1}^{\lfloor \frac{m}{d}\rfloor}[gcd(i,j)=d]\) 由莫比乌斯函数性质,原式可化为 \(\displaystyle \sum _{d=1}^{n}d\displaystyle \sum _{i=1}^{\lfloor \frac{n}{d}\rfloor}\displaystyle \sum _{j=1}^{

BZOJ_2820_YY的GCD_莫比乌斯反演

我怕爱的太早我们不能终老 提交于 2020-03-01 14:56:31
BZOJ_2820_YY的GCD_莫比乌斯反演 题意&分析: $\sum\limits_pis[p]\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)=p]$ $=\sum\limits_pis[p]\sum\limits_{i=1}^{\lfloor \frac{n}{p}\rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{p}\rfloor}[gcd(i,j)=1]$ $=\sum\limits_pis[p]\sum\limits_{i=1}^{\lfloor \frac{n}{p}\rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{p}\rfloor}[gcd(i,j)=1]$ $=\sum\limits_pis[p]\sum\limits_{i=1}^{\lfloor \frac{n}{p}\rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{p}\rfloor}\sum\limits_{d|gcd(i,j)}\mu(d)$ $=\sum\limits_pis[p]\sum\limits_{d=1}^{\lfloor \frac{n}{p}\rfloor}\mu(d)\sum\limits_{i=1}^{\lfloor

[数论]莫比乌斯反演3

杀马特。学长 韩版系。学妹 提交于 2020-03-01 08:53:41
索引 莫比乌斯反演1 定理 莫比乌斯反演2 证明 莫比乌斯反演3 技巧 实用技巧 1、 \[[gcd(i,j)=1]=\sum_{d|gcd(i,j)}\mu(d)\] 证明 根据性质1,其实就是莫比乌斯函数的定义 莫比乌斯函数的性质1 \[\sum_{d|n}\mu(d)=[n=1]\] 那么我们将gcd(i,j)带入n即可得到 \[\sum_{d|gcd(i,j)}\mu(d)=[gcd(i,j)=1]\] 证毕。 2、 求下式 \[\sum_{j=1}^{n}\sum_{j=1}^{m}gcd(i,j),(n<m)\] 因为 \[\sum_{d|n}\varphi(d)=n\] 我们按照套路将上式的要求的式子的 \(n\) 替换为 \(gcd(i,j)\) 即原式变换为: \[\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|gcd(i,j)}\varphi(d)\] 按照套路将d分类得 \[\sum_{d=1}^{n}\varphi(d)\times\lfloor\frac{n}{d}\rfloor\times\lfloor\frac{m}{d}\rfloor\] 结束。 3、 这是套路3(见下)的简化版 将一般求和式转为枚举式 例如下式: \[\sum_{i=1}^{\lfloor\frac{a}{d}\rfloor}\sum_{j=1}^{

【算法】莫比乌斯反演

旧城冷巷雨未停 提交于 2020-03-01 06:53:15
  在正文开始之前感谢一下几篇论文 & 博客以及一位大佬 remoon_OFN 。   1. 2016国家集训队论文任之洲《积性函数求和的几种方法》   2. PoPoQQQ 的相关题解(%%%)。   3. 当然除此之外还有很多……   其实两三个月之前我就已经接触过反演了,但在那个时候对反演完全是一种懵逼的状态。重点其实还是在于通过自己多推式子,多化式子来理解和接受卷积的这样一种运算。当然,丰富的数论知识也是必不可少的(有时候一些题目会用到一些奇奇怪怪的性质)。实际上,反演就是已知一个函数 \(g\) 与 \(f\) 的关系,要通过 \(f\) 求出 \(g\),或通过 \(g\) 求出 \(f\)。反演,可以理解为一种变换。那么,莫比乌斯反演就是一种特别的变换: 若我们有 \(f = 1 * g\) 则有 \(g = \mu * f\)   这是一种式子的变形,当原本的式子中出现了\(f\) 或 \(g\) 的时候,可以考虑用另一个函数来替换它,从而找到一个易求得的式子。常用的卷积关系有如下几种: \(\mu * 1 = \epsilon \) \(\phi * 1 = id\) \(id * \mu = \phi\)   (以上式子中的函数均为积性函数)。注意:积性函数的卷积依然为积性函数,并且卷积满足结合律, 交换律,分配律。  

蒟蒻林荫小复习——莫比乌斯反演

梦想与她 提交于 2020-02-27 01:54:41
莫比乌斯反演 积性函数:对于函数f,如果有质数p,q,使得f(p)f(q)=f(pq),则函数f为积性函数 设积性函数f,有和函数   显然,F由f决定,这种关系是否可以反过来?   F(1)=f(1)F(1)=f(1)   F(2)=f(1)+f(2)F(2)=f(1)+f(2)   F(3)=f(1)+f(3)F(3)=f(1)+f(3)   F(4)=f(1)+f(2)+f(4)F(4)=f(1)+f(2)+f(4)   F(5)=f(1)+f(5)F(5)=f(1)+f(5)   F(6)=f(1)+f(2)+f(3)+f(6)F(6)=f(1)+f(2)+f(3)+f(6)   F(7)=f(1)+f(7)F(7)=f(1)+f(7)   F(8)=f(1)+f(2)+f(4)+f(8)F(8)=f(1)+f(2)+f(4)+f(8) 可以发现,我们可以由F去反推f 形式化的说,f(x)等于形式上一些±F(x/d)的和 则可能有这样的式子: 其中μ是算术函数,如果等式成立,则 μ(1)=1 μ(2)=-1 μ(3)=-1 μ(4)=0 μ(5)=-1 μ(6)=1 当有质数p时,f(p)=F(p)-F(1) 则我们可以发现,μ(1)=1,对于任何一个质数,μ(p)=-1 因为F(p^2)=f(1)+f(p)+(fp^2),f(p^2)=F(p^2)-F(p) 则μ(p^2

莫比乌斯反演

怎甘沉沦 提交于 2020-02-13 23:47:24
莫比乌斯反演 莫比乌斯反演是数论中的重要内容。对于一些函数 \(f(n)\) ,如果汉南直接求出它的值,而容易求出其背书和或约数和 \(g(n)\) ,那么可以通过莫比乌斯反演简化运算,求得 \(f(n)\) 的值。 我们需要一些前置知识: 积性函数、狄利克雷卷积、莫比乌斯函数 前置芝士 引理1 \[ \forall a,b,c \in \mathbb{Z},\lfloor \frac{a}{bc} \rfloor = \lfloor \frac{\lfloor \frac{a}{b} \rfloor}{c} \rfloor \] 略证: \[ \frac{a}{b} = \lfloor \frac{a}{b} \rfloor + r(0 \leq r < 1) \implies \lfloor \frac{a}{bc} \rfloor = \lfloor \frac{a}{b} * \frac{1}{c} \rfloor = \lfloor \frac{1}{c}(\lfloor \frac{a}{b} \rfloor + r) \rfloor = \lfloor \frac{\lfloor \frac{a}{b} \rfloor}{c} + \frac{r}{c} \rfloor = \lfloor \frac{\lfloor \frac{a}{b} \rfloor}{c}

莫比乌斯函数

左心房为你撑大大i 提交于 2020-01-28 00:49:19
【问题描述】 莫比乌斯函数,数论函数,由德国数学家和天文学家莫比乌斯(Möbius ,1790–1868)提出。梅滕斯(Mertens)首先使用μ(n)作为莫比乌斯函数的记号。而据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数。莫比乌斯函数在数论中有着广泛应用。 莫比乌斯函数完整定义的通俗表达: 1)莫比乌斯函数μ(n)的定义域是N 2)μ(1)=1 3)当n存在平方因子时,μ(n)=0 4)当n是素数或奇数个不同素数之积时,μ(n)=-1 5)当n是偶数个不同素数之积时,μ(n)=1 例如: μ(8),μ(12),μ(18) = 0 μ(2),μ(3),μ(30) = -1 μ(1),μ(6),μ(10) = 1 给出一个数n, 计算μ(n)。 【输入形式】 输入一行一个整数n 【输出形式】 输出μ(n) 【样例输入】 12 【样例输出】 0 【示例代码】 # include <iostream> # include <cmath> using namespace std ; int pfyz ( int ) ; int prime ( int ) ; int main ( ) { int n , m = 0 , i = 2 , j , a , b , s , f = 0 , t = 0 ; cin >> n ; s = n ; if ( pfyz ( n ) ==

莫比乌斯反演

独自空忆成欢 提交于 2020-01-26 18:09:19
莫比乌斯函数线性筛: const int maxm = 1 e6 + 5 ; int notprime [ maxm ] ; int prime [ maxm ] , cnt ; int mob [ maxm ] ; void Minit ( ) { mob [ 1 ] = 1 ; for ( int i = 2 ; i < maxm ; i ++ ) { if ( ! notprime [ i ] ) { //如果是素数 prime [ cnt ++ ] = i ; mob [ i ] = - 1 ; } for ( int j = 0 ; j < cnt ; j ++ ) { if ( prime [ j ] * i >= maxm ) break ; notprime [ prime [ j ] * i ] = 1 ; mob [ prime [ j ] * i ] = i % prime [ j ] ? - mob [ i ] : 0 ; if ( i % prime [ j ] == 0 ) break ; } } } 莫比乌斯函数性质: μ是莫比乌斯函数 1.∑μ(d) = [n==1] (d|n,即d是n的因子) 2. ∑(μ(d)/d) = (ϕ(n)/n) (d|n,ϕ是欧拉函数),这个性质把莫比乌斯函数和欧拉函数联系起来了 莫比乌斯反演: P2257