笔记 - 单位根反演

单位根反演

单位根,一个耳熟能详的东西。

单位根 ωn 定义为,xn=1 的解中,不等于 1,辐角最小的那个。

然后 wn0...n1 次幂,正好可以遍历 xn=1 的所有解。

然后 ωn 有一些有趣的性质

  1. 幂可以模 n

    显然,因为 n 次幂相当于向量转一圈,然后转了个寂寞,所以可以随便的增加 / 减少

  2. n2 次幂相当于取负

显然,转半圈转到对面去

这两个性质很显然,但您想必已经明白了它的妙处:它的幂,就相当于在转

单位复根转转转

然后它就可以用来解决一些,与倍数有关的问题 —— 可以把一个倍数的限制条件转化成幂

反演式

i=0n1(ωnk)i=n×[n|k]

这本质是一个等比数列求和。右边会出现一个条件判断,是因为等比数列求和要分公比是否为 1 来讨论。

然后就讨论一下 ωnk 是否为 1,就可以证明了

用的时候可以把 n 移到左边去,然后单独转化一个 [n|k]

千万别忘了除掉那个 n

顺便再提一嘴,用的时候一般还会带一个组合数,然后变成二项式定理的形式

例题

loj 6247

非常板子

先变成 i=0n[k|i](ni)

然后把整除换成单位根反演式子,交换一下求和符号,二项式定理

=i=0np=0k1(ωki)p(ni)=p=0k1i=0n(ωkp)i(ni)=p=0k1(ωkp+1)n

然后 k220 级别。直接做。

小小总结一下

单位根反演,其实就是把一个漂亮的求和,加上一个倍数的限制

然后这时候可以利用单位根的转转转,把倍数换成原来完整的求和

loj 6485

又是一个组合数套一个幂再套一个倍数

这里稍微一点变化是,我们先枚举 %4 余多少,假设是 k ,然后去算贡献,完了乘以 ak

换句话说就是算 a[0,1,2,3] 分别是多少系数

式子略

bzoj 3328

还是老套路,这个枚举倍数在做数论函数题的时候见惯了

直接变成

k|i(ni)Fi

其中 Fi 是斐波那契

然后这里又有组合数,按套路,要找一个幂来

斐波那契,幂...矩阵快速幂!

A=[1110]

然后 Fn 就是 An 的左上角。这里我们先把矩阵搞出来,最后一步再取左上角。

答案的矩阵

=k|i(ni)Ai=i=0np=0k1(ωki)pAi(ni)=p=0k1i=0n(ωkp)iAi(ni)=p=0k1(ωkpA+I)n

其中 I 是单位矩阵

然后发现 k 很小,直接做

思考:题目中的 p1(modk) 是做甚么用的?

posted @   Flandre-Zhu  阅读(137)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示