首页 > 编程语言 >算法随笔——数论之莫比乌斯反演

算法随笔——数论之莫比乌斯反演

时间:2024-06-01 15:33:15浏览次数:37  
标签:mu int epsilon sum large 反演 莫比 随笔 id

链接
链接2
链接3
链接4

前置知识:

数论分块

可以求形如:\(\sum f(i)g(\left \lfloor n/i \right \rfloor )\) 的东西。
原理如下:
比如说求 $\sum_{i=1}^{10}\left \lfloor 10/i \right \rfloor $
得到:10 5 3 2 2 1 1 1 1 1
可以发现有一些块的数值是一样的。
具体一点可以发现 \([l, \left \lfloor \frac{n}{\left \lfloor \frac{n}{l} \right \rfloor } \right \rfloor ]\) 里的数值都是一样的。
又因为这样的值只有 \(\sqrt n\) 个,因此这个式子可以在 \(O(\sqrt n)\) 的复杂度算出来.

int sum(int n)
{
	int res = 0;
	for (int i = 1,r;i <= n;i = r + 1)
	{
		r = n/(n/i);
		res += ...//计算贡献
	}
	return res;
}

狄利克雷卷积

一些数论函数:
\(\epsilon (n)\) : \([n=1]\)
\(I(n)\):任何情况下,\(I(n) = 1\)。
\(id(n)\): \(id(n) = n\)
\(\varphi(n)\) : 欧拉函数, \([1,n]\) 之内与 \(n\) 互质的整数的个数.单点求解欧拉函数

点击查看代码
int get_euler(int n)
{
    phi[1] = 1;
    for (int i = 2;i <= n;i++)
    {
        if (!vis[i]) 
        {
            prime[cnt++] = i;
            phi[i] = i - 1; 
        }
        for (int j = 0;prime[j]<= n/i;j++)
        {
            vis[prime[j] * i] = 1;
            if (i % prime[j] == 0)
            {
                phi[i*prime[j]] = phi[i] * prime[j];
                break;
            }
            phi[prime[j] * i] = phi[i] * (prime[j]-1);
        }
    }
    return res;
}

莫比乌斯函数 \(\mu\) :
image
筛法:

点击查看代码
void euler(int n)
{
	mu[1] = 1;
	for (int i = 2;i <= n;i++)
	{
		if (!vis[i]) primes[cnt++] = i,mu[i] = -1;
	 	for (int j = 0;primes[j] <= n / i;j++)
	 	{
	 		int num = i * primes[j];
	 		vis[num] = 1;
	 		if (i % primes[j] == 0)
	 		{
	 			mu[num] = 0;
	 			break;
	 		}
	 		mu[num] = -mu[i];
	 	}		
	}
}

\(\sigma(n)\) 约数和函数:\(\sigma(n) = \sum _{d|n} d\)。

狄利克雷卷积

\[{\large (f*g)(n) = \sum_{d|n}^{} f(d) \times g(\frac{n}{d})} \]

则有:

\[{\large \mu * I = \epsilon} \]

\[{\large \varphi * I = id} \]

\[{\large \mu * id = \varphi} \]

\[{\large f * \epsilon = f} \]

\[{\large I * id = \sigma} \]

\(\epsilon\) 是单位函数,\(\mu\) 和 \(I\) 互为逆元。
同时可以发现狄利克雷卷积满足交换律、分配律和结合律。

例题1

${\large \mu * I = \epsilon} $

image
image

例题2

${\large \varphi * I = id} $

image

例题3

${\large \mu * I = \epsilon} $

image

标签:mu,int,epsilon,sum,large,反演,莫比,随笔,id
From: https://www.cnblogs.com/codwarm/p/18114331

相关文章

  • 算法随笔——数位DP
    学习链接https://www.luogu.com/article/tzeo544s数位DP标准模版:lldfs(intpos,intpre,intst,……,intlead,intlimit)//记搜{ if(pos>len)returnst;//剪枝 if((dp[pos][pre][st]……[……]!=-1&&(!limit)&&(!lead)))returndp[pos][pre][st]……[……];//记录当前值......
  • 算法随笔——状压DP题目整理
    枚举状态S的子集:for(ints=0;s<=tot;s++){ for(ints2=s;;s2=s&(s2-1)){枚举子集例题旅行商问题:P8733[蓝桥杯2020国C]补给在方格中填图案问题:蒙德里安问题国际象棋炮兵阵地......
  • 随笔,这学期最后一天的算法学习
    最近没写什么笔记,并不是因为懒了。而是和我上一次大片时间咕了笔记一样:备战蓝桥杯。这种时候我一般都会力扣上刷刷题:距今为止,力扣一共刷了142道题,一大半的中等题和一部分简单题以及一点点困难题。在备战的最后一天,我又通过历年卷(其实只有去年)学习了快速幂求逆元,最小生成树以及单......
  • 【游戏设计随笔08】茶杯头游戏中的BOSS是如何干掉你的?
    茶杯头中的boss往往体型巨大,boss攻击的本质其实是阻止玩家站桩输出,同时测试玩家的跑动,跳跃,冲刺和格挡能力。boss通过各种模式的攻击组合在一起,但是这些也是可预测的,会通过动画,音效,文字来暗示你,这称之为前摇暗示“telegraphing”,敌人的前摇时长决定了游戏难度。强力的攻击往往前摇......
  • 随笔 [随更] 毕业前夕
    暂未开放。随笔[随更]毕业前夕2024/5/30毕业前约一个月毕业联欢会前夕明天就是班级毕业联欢会了,准备了几个自己最喜欢的吉他曲目,现在晚上,刚刚练完,手有点麻。今晚没有月亮,被层云遮盖的天没什么亮光。我想,联欢会本是应该感到高兴才对,我却总感觉怅然若失。也许是快要分别的......
  • 二项式反演
    二项式反演简介二项式反演可以用来解决一些计数问题,是连接至少/至多与恰好两类函数的桥梁。形式一\[f(n)=\sum_{i=0}^n(-1)^i\binom{n}{i}g(i)\\g(n)=\sum_{i=0}^n(-1)^i\binom{n}{i}f(i)\]证明代\(g(n)\)入第一条式子。\[\begin{aligned}f(n)&=\sum......
  • 莫比乌斯函数
    莫比乌斯函数定义\[\mu(x)=\left\{\begin{matrix}1&x=1\\(-1)^m&x=p_1\\0other\end{matrix}\right.\]求法方法1.直接暴力分解质因数太水了。方法2.埃氏筛\(O(n\log\logn)\)方法3.线性筛for(inti=2;i<=n;i++){ if(!is_prime[i]){ prime[++cnt]=i;......
  • python3.x中ORM框架SQLObject使用SQLite数据库随笔
    1、如果未安装SQLObject首先要安装,在管理员CMD下,输入如下命令:pipinstallsqlobject2、创建数据库文件,并建立数据库连接,通过修改SQLObject内置的sqlhub的processConnection属性,具体代码如下sqlobject.sqlhub.processConnection=sqlobject.connectionForURI('sqlite:.......
  • ChatGPT随笔
    我通过询问周边数位每天使用大模型平均超过两个小时以上的学者,得到他们对于大模型的看法是:“ChatGPT确实很厉害,但是价格难以负担,且使用十分不便。国产的也有用,但是没大用,更多像个高级搜索引擎”。进一步问他们平时最多用大模型做什么,答案基本是:“进行文本翻译、润色文本、生成简单......
  • 随笔
    问题String带小数转long类型DoubledoubleTime=Double.parseDouble("22.1");longlongTime=doubleTime.longValue();linux从一台机器复制文件到另一台机器#从有文件的机器复制到目标机器10.51.207.55#scp源文件路径root@目标机器IP:目标文件路径scp/root/sof......