专栏文章
题解:P3811 【模板】模意义下的乘法逆元
P3811题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mip9cevp
- 此快照首次捕获于
- 2025/12/03 08:17 3 个月前
- 此快照最后确认于
- 2025/12/03 08:17 3 个月前
递推法求乘法逆元
这一点非常的重要!
应用:求 的所有乘法逆元。
时间复杂度:。
首先,我们要知道 ,因为:显然,在 下, 是 的乘法逆元。
其次,对于递归情况 ,我们设 ,则有 。
所以,在模 意义下,。
此时,左右两边同时乘以 ,得:
再带入 ,得:
注意, ,又因为在递推的过程中,我们已经求出了所有小于 的在模 意义下的乘法逆元,可表示为 。从 改成 是因为我们的运算符是同余,系数可以随便改。
代码
CPP#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n, p, inv[3000006];
signed main() {
cin >> n >> p;
for (int i = 1; i <= n; i++) {
if (i == 1) inv[i] = 1;
else inv[i] = (long long)(p - p / i) * inv[p % i] % p;
}
for (int i = 1; i <= n; i++)
cout << inv[i] << "\n";
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...