数学 : 从入门到入土
目录#
-
一点前置知识
-
数论函数,莫比乌斯反演与卷积
-
生成函数
-
同余与乘法逆元
-
组合数学
-
期望与概率
前置知识#
元,单位元和逆元#
首先,这三个概念都是对于一个特定的运算而言的.
元就是运算的要素,在加减乘除里就是数,在狄利克雷卷积里就是数论函数,在矩阵乘法里就是矩阵.
单位元满足如下性质:
对于一个运算,定义单位元使得.
例如在加法,单位元就是,乘法单位元为,矩阵乘法单位元为单位矩阵,狄利克雷卷积单位元为单位元函数.
快速幂#
对于一个幂,存在能在时间复杂度去计算它的方式.
考虑的奇偶.
即可.
代码实现求 :
ll qpow(ll a,ll b,ll p) {
ll res = 1;
while(b) {
if(b & 1) res = res * a % p;
a = a * a % p;
b >>= 1;
}
return res;
}
常用符号#
,空集.
:$\phi$
,欧拉函数.
:$\varphi$
,艾佛森约定,即如果中括号内表达式为真则为1,为伪则为0.
:$[ ]$
,莫比乌斯函数
:$\mu$
下取整.
:$\lfloor \rfloor$
上取整.
:$\lceil \rceil$
数论函数,莫比乌斯反演与卷积#
数论分块/整除分块#
用于将带下取整(形如的合式从优化到.
对于一个数使得,不难发现对于一个特定的区间使得都有同样的与之对应.
比如,,使得时,均成立,于是求出每个块左右端点就可以简化求下取整的过程.
例题#
题意简单到离谱:
给出,求
作为求和指标的以模数的形式出现实在是十分奇妙.
szq巨神曾言道:式子都是越推越复杂然后解出来的
考虑模的意义:
式子化为:
其中后一部分可以靠数论分块求得.
具体实现#
首先要确定分母和左端点.
这时候我们要找到一个最大的,使得
根据数论分块,有:
即可完成分块.
对于下一块,将上一块的右端点+1作为其左端点,重复此过程即可.
例题代码#
int mian() {
ll n = read(),k = read();
ll ans = n * k;
for(ll l = 1,r;l <= n;l = r + 1) {
if(k / l) r = std::min(k / (k / l),n);
else r = n;
ans -= (k / l) * (r - l + 1) * (l + r) / 2;
}
write(ans);
return 0;
}
数论函数#
定义域为正整数集的函数.
常见的数论函数:
阶乘#
数列#
幂#
积性函数#
一种特殊的数论函数,满足对于整数,当,有:
显然这条特性对于一个质数的函数值被求出后可以拓展到更多函数值.
完全积性函数:
对于所有整数,
常见的积性函数 :
欧拉函数#
,代表里与互质的数的个数
显然对于一个质数,有
void EulerPrime(int n) {
phi[1] = 1;
ff(i,2,n) {
if(!vis[i]) {
phi[i] = i - 1;
prime[pcnt++] = i;
}
ff(j,0,pcnt - 1) {
if(1ll * i * prime[j] > N)
break;
vis[i * prime[j]] = 1;
if(i % prime[j])
phi[i * prime[j]] = phi[i] * (prime[j] - 1);
else {
phi[i * prime[j]] = phi[i] * prime[j];
break;
}
}
}
}
莫比乌斯函数#
这个定义十分令人迷惑.
由于唯一分解定理,每个自然数都可以表示成:
其中为质数.
那么莫比乌斯函数可以表示为:
单位元函数#
这个函数在狄利克雷卷积中作为单位元存在,即:
对于一个数论函数,
例题#
积性函数在OI中的地位体现在可以用线性筛在复杂度内求出.
模板中的模板,欧拉筛法.
相比于的埃拉托色尼筛法更加的快捷,代码量也不大.
原理是使一个合数总是被自己的最小质因数筛掉,防止像埃氏筛一样出现合数被多次标记的情况.
考虑什么情况下会导致看不见另一个人.
将左下角的点和其他点连线,考虑每一个点对连线的斜率.
对于一个斜率,有最小的使得其他斜率相同的连线形成的三角形都是其位似,即被最初这一对所阻挡.
于是对于坐标,有
枚举每个横坐标,则这个横坐标对答案贡献为与其互质的纵坐标个数,这是对于下半部分等腰直角三角形的贡献,那么答案为:
线性筛即可.
狄利克雷卷积#
函数卷起来了
更多例题#
给出,求:
多倍经验:
UVA11426 拿行李(极限版) GCD - Extreme (II)
有些要忽略重复贡献,稍微减一下即可.
突然发现这好像是欧拉反演,不过这不要紧
众所周知,欧拉函数有一条奇妙的性质:
然后还有的奇妙性质,于是我们把套进前面的式子.
好像很棒的样子.
现在我们带回原式吧.
就这么结束了.
求欧拉函数,然后直接枚举即可.
当然可以整除分块,如果使用筛求前缀和的话就是.
是不是和仪仗队那道题特别像
这道题的特点是行数和列数不相等,于是重新从斜率的角度出发.
首先,点对答案没有贡献(即连线上没有植物)的条件是.
考虑如何计算损失.
众所周知,有一种东西叫做位似.
显然点到的路径上有个整点.
于是其贡献转化为
易得总贡献为:
考虑如何计算二重合式的部分.
现在仍然是把欧拉反演的结论套上去,参考上一题即可:
同样的套路.
用简单的数学基础
巨佬们说的数学"直觉"
小学五年级学生都会的奥数
强大坚实的打表功力
看不出来你AFO吧
就能看出,这个公式是求:
其中为因数个数函数(除数函数).
一个简单的想法就是直接线性筛,可以直接得到70分,可喜可贺,可喜可贺.
尝试找到更优的解法,众所周知,于是考虑有没有根号级复杂度的算法.
考虑枚举因数,在一个区间中,数作为因子出现的次数为,于是转化为前缀和相减的形式即可用数论分块求解了.
即:
生成函数#
又名母函数.
普通生成函数 (OGF)#
对于一个数列 定义其普通生成函数为 :
举个例子 : 对于斐波那契数列 :
做其 OGF 为 :
考虑递推式,其中有 项与 项,试构造恒等关系,使得其中对于高位部分 与 和 分别对齐.
构造,相当于把无限合式向右移动一位,构造 , 相当于把无限合式右移 位.
n | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
无0次项 | |||||
无0次项 | 无1次项 |
这时考虑是否成立,显然对于以上均成立,考虑 两项.
可得新恒等关系:
于是 :
那么如何求出通项 ?
考虑待定系数法 :
于是列出方程组 :
求解即可
可以发现 是著名的 黄金分割 ,这时候可以记 为 记 为
于是 :
根据幂级数展开,得到 :
那么根据之前生成函数的定义,可知系数就是通项,于是 :
比起什么矩阵啊,特征方程啊,简单又好证,非常的套路化,可以套模板.
这就是生成函数的好处.
常用 OGF 与 OGF 变形方式#
质数生成函数 (EGF)#
狄利克雷生成函数 (DGF)#
同余与乘法逆元#
组合数学#
醒醒,你连数都数不明白
期望与概率#
作者:AstatineAi
出处:https://www.cnblogs.com/AstatineAi/p/math-and-number-theory.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本