当前位置: 首页 > news >正文

Luogu P3811 【模板】模意义下的乘法逆元 题解

前言

题目传送门 Luogu P3811 【模板】模意义下的乘法逆元

题意

\(1\sim n\) 中所有数在 \(\bmod\ p\) 意义下的乘法逆元。

思路

对于这种求一连串数的逆元的情况,一般的算法都会 \(\texttt{TLE}\) 。这时候,就需要一种 \(O(n)\) 的算法。也就是递推大人。

(以下记一个数 \(a\) 的逆元是 \(a^{-1}\)

首先我们知道,\(1\) 的逆元 \(1^{-1}\)\(1\)

然后我们设 \(p=ik+r\) ,也就是说,\(k\)\(p\div i\) 的商,而 \(r\) 是余数。所以我们有如下同余式:

\[ki+r\equiv 0\ (\ \bmod\ p\ ) \]

接下来,在同余式两边同乘 \(i^{-1}\cdot r^{-1}\) ,得到如下同余式:

\[kr^{-1}+i^{-1}\equiv 0\ (\ \bmod\ p\ ) \]

移项,我们得到如下同余式:

\[i^{-1}\equiv -kr^{-1}\ (\ \bmod\ p\ ) \]

\[i^{-1}\equiv -\left\lfloor \frac{p}{i} \right\rfloor r^{-1}\ (\ \bmod\ p\ ) \]

由于负数取模会出现向零取整的问题,我们进行一点恒等变换,原式可化为:

\[i^{-1}\equiv (p-\left\lfloor \frac{p}{i} \right\rfloor)\cdot r^{-1}\ (\ \bmod\ p\ ) \]

然后就可以 \(O(n)\) 递推了。

代码

#include<iostream>
#define fastio ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define int long long
#define MIKU 0
using namespace std;int n, p;
int inv[3000005] = {0, 1};signed main() {fastio;cin>>n>>p;cout<<1<<'\n';for(int i=2; i<=n; i++) {inv[i] = (p - p / i) * inv[p % i] % p;cout<<inv[i]<<'\n';}return MIKU;
}
http://www.jsqmd.com/news/415349/

相关文章:

  • 我是如何用AI来读书的
  • 我是如何让AI帮我管理日程的
  • index - liyan
  • 搭建OpenClaw实现钉钉 AI 员工自动化 (一)
  • _index - liyan
  • QOJ10518 腐蚀与膨胀
  • archive - liyan
  • .NET 本地Db数据库-技术方案选型
  • BPF LRU_HASH_MAP 及 HASH_MAP 的使用异常 - liyan
  • 2026.2.26
  • 我把AI接到了微信
  • 轮廓线DP
  • 2026年2月冷库安装品牌推荐,标准化安装流程与完善售后 - 品牌鉴赏师
  • Hive执行引擎比较:选择最适合的方案
  • 我是如何让AI每天自动学CSDN的
  • .NET 本地Db数据库选型
  • 2026年2月PVC卷帘门供应厂家推荐,环保洁净优质厂家推荐 - 品牌鉴赏师
  • AI居然能记住我之前说过的话
  • C++游戏开发之旅 17
  • Copyparty + cpolar,随时随地访问你的私人文件库
  • AI能帮我跑代码了直接执行命令行
  • 2026年IM厂商怎么选?4家主流即时通讯厂商能力对比与选型参考
  • AI助手有了自己的浏览器自己就能上网冲浪
  • Go语言高并发采集:Goroutine配合隧道代理的极致性能体验
  • 全球主要指数估值对比分析:数据驱动的投资决策指南
  • AI助手的核心Gateway一篇就看懂
  • 2026年2月常州正规月嫂公司推荐榜,正规资质与完善服务体系推荐 - 品牌鉴赏师
  • AI助手功能不够用来试试插件扩展
  • 2026年2月天然苏打水厂家精选:适合日常饮用的健康好水 - 品牌鉴赏师
  • 2026最新最全国内大厂Java面试高频题库