在 OI 范围内寻找单位根

news/2025/2/26 8:29:23/文章来源:https://www.cnblogs.com/caijianhong/p/18737658

参考文章:CF1103E Radix sum - 洛谷专栏、数学小记 #3:从 CF1103E 浅谈异或卷积 - 洛谷专栏。

  1. 可以使用 polar(1, 2 * pi / m) 获得复数域下的 \(m\) 次本原单位根。需要慎重使用这样的单位根。

  2. 如果有素数 \(p\) 和正整数 \(m\) 满足 \(m|(p-1)\),则可以在 \(\mathbb F_p\) 下找到 \(m\) 次本原单位根(即原根的 \((p-1)/m\) 次方)。

洛谷原根模板题太恶臭了,在这里放一下求原根的代码:

// mint 是 F_p 下的数,代码求出 p 的最小原根
mint pmroot() {vector<int> pri;int m = mint::mod - 1;for (int i = 2; i * i <= m; i++) if (m % i == 0) {pri.push_back(i);while (m % i == 0) m /= i;}if (m > 1) pri.push_back(m);m = mint::mod - 1;for (mint g = 1; ; g += 1) {bool flag = false;for (int p : pri) {if (qpow(g, m / p) == 1) flag = true;}if (!flag) return g;}throw -1;
}
  1. \(m\) 极小,则可以扩域维护每个数为 \(f_0+f_1w+f_2w^2+\cdots+f_{m-1}w^{m-1}\) 的形式,最后将这个多项式模 \(m\) 级分圆多项式 \(\Phi_m(w)\) 获得真实值。

\(m\) 级分圆多项式 \(\Phi_m(x)\) 是一个在 \(\mathbb Z[x]\)\(\varphi(m)\) 次的不可约首一多项式,满足

\[\Phi_n(x)=(x-w_1)(x-w_2)\cdots(x-w_{\varphi(n)})=\prod_{i=0}^{n-1}(x-w^i)^{[\gcd(i, n)=1]} \]

其中 \(w_1, w_2, \cdots, w_{\varphi(n)}\) 是全部 \(n\) 次本原单位根,\(w\)\(w_1, w_2, \cdots, w_{\varphi(n)}\) 中任取。根据一些资料可以得知:

\[\prod_{d|n}\Phi_d(x)=x^n-1 \]

\[\Phi_n(x)=(-1)^{[n=1]}\prod_{d|n}(1-x^d)^{\mu(n/d)} \]

void init() {  // k 次分圆多项式,次数为 phi[k]T[0] = 1;for (auto i : d[k]) {  // d[k] 是 k 的所有因子if (mu[k / i] == 1)for (int j = phi[k]; j >= i; j--) T[j] -= T[j - i];else if (mu[k / i] == -1)for (int j = i; j <= phi[k]; j++) T[j] += T[j - i];  // 实际上是退背包}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/889952.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章

2025年2月25日,.NET团队在博客上宣布了.NET 10 Preview 1的正式发布,文章参见:https://devblogs.microsoft.com/dotnet/dotnet-10-preview-1/,标志着.NET框架在跨平台开发领域迈出了重要一步。这一新版本在.NET Runtime、SDK、库、C#、ASP.NET Core、Blazor以及.NET MAUI等…

推荐一款最新开源,基于AI人工智能UI自动化测试工具!支持自然语言编写脚本!

随着互联网技术的飞速发展,Web应用越来越普及,前端页面也越来越复杂。为了确保产品质量,UI自动化测试成为了开发过程中不可或缺的一环。然而,传统的UI自动化测试工具往往存在学习成本高、维护困难等问题。特别是UI 自动化脚本里往往到处都是选择器,比如 #ids、data-test、…

无需破解,国际版也很香!

随着短视频平台的迅速崛起,各类短视频内容如搞笑片段、生活窍门、旅行日志和教学视频层出不穷,几乎覆盖了所有主题和风格。大众对视频质量的要求日益提高,因此选择一款专业的视频编辑软件显得尤为重要。用户可以利用多层时间线进行剪辑,添加特效与转场,调整色彩和音频,甚…

读DAMA数据管理知识体系指南05数据治理(中)

数据治理需支持业务战略,明确治理责任,评估能力,制定战略框架,参与变革与问题管理,确保法规遵从,通过监控和评估提升数据质量和治理效果。1. 规划组织的数据治理 1.1. 数据治理工作必须支持业务战略和目标1.1.1. 一个组织的业务战略和目标影响着组织的数据战略,以及数据…

记录绘制立体平面网格分块图像

绘制如下图所示的图片方法: ​​ 首先在drawio中为图片画好网格,如下图所示 ​​ 然后将该图片导出,(推荐导出为svg格式,无损清晰),将导出的图片导入PPT中 在PPT中通过开始=》形状效果=》三维旋转=》离轴 2:上​来将图片转换成立体效果。 ​​ ​​ 最后右键单击PPT中已…

开源一款数据转换扩展板-FreakStudio多米诺系列

数据转换板通过I2C接口进行信号采集和输出,支持最多16通道输入和2通道输出。具备860Hz采样率和50KHz输出频率,采用16位ADC和12位DAC芯片,适用于精确信号采集。小尺寸设计,支持堆叠级联。原文链接: FreakStudio的博客 摘要 数据转换板通过I2C接口进行信号采集和输出,支持最…

【CodeForces训练记录】Codeforces Round 1006 (Div. 3)

训练情况赛后反思 结束前打表看出来了 F 有一点进制的规律,太极限了来不及写了 A题 显然不合法的情况就是所有元素绝对值的和都比和的绝对值小,这种情况无论怎么凑都到不了 \(k\),剩下的就是把和均摊到值域上,除以值域向上取整就是答案点击查看代码 #include <bits/stdc…

西湖论剑2025Misc—cscs

西湖论剑2025cscs详解 Cobalt Strike流量主要是找beacon,主要以两种形式呈现 一小段shellcode(几百个字节),通常叫做stager shellcode,这段代码下载整个的beacon。 一个完全的beacon:一个可以反射性加载的PE文件 先来了解下cs流量的特征 cs流量特征: 1,基础特征:心跳包…

轻松驾驭Docker!Windows Docker Desktop部署Portainer全攻略

轻松驾驭Docker!Windows Docker Desktop部署Portainer全攻略 一、引言 在当今的软件开发领域,Docker 已经成为构建、部署和运行应用的标准之一。它通过容器化技术使得开发者可以轻松地打包应用程序及其依赖,并确保它们可以在任何环境中一致地运行。 为了更好地管理和监控这些…

部署 VS2022 驱动开发环境-解决无法编译驱动的问题

使用 VS2022 安装驱动开发环境,创建默认的驱动项目是无法直接编译出驱动的文件的,需要使用 NuGet 给项目安装【Microsoft.Windows.WDK.x64】1、下载安装 VS2022(最低支持的 WDK 版本:10.0.26100) 下载地址:https://visualstudio.microsoft.com/zh-hans/downloads 1.1 组件选…

web开发 辅助学习管理系统开发日记 day2

Q1:遇到的api返回结果数据封装的问题,在老版本的springboot中当实现类的类名和数据库中的类名不一致的是不会自动封装返回,因此返回结果值会显示null,但是在新版貌似已经会自动识别,所以我没有遇到该问题,如果遇到用手动结果映射的方法解决。Q2:在进行前后端联桥时,前端服…

右值引用和移动语义

右值引用(Rvalue reference)和移动语义(Move semantics) 左值(lvalue)和右值(rvalue)左值(也称为 locator value)是一个可以被修改的存储位置,指向内存中的某个位置 例子:变量、数组元素、解引用指针等判断左值的方法是:能够获得这个表达式的引用 或者取地址右值 …