洛谷P3811题解
原题:
思路:
没啥思路
已经把思路贴我脸上了
求逆元
这玩意是很重要的东西,一旦涉及到除法取模,就要用逆元转化成乘法来取模
原因是:
(a+b) mod c=((a mod c)+(b mod c))mod c
(a-b) mod c=((a mod c)-(b mod c))mod c
(a*b) mod c=((a mod c)*(b mod c))mod c
(ab) mod c=((a mod c)b)mod c
但就是没有(a/b) mod c=((a mod c)/(b mod c))mod c
所以除法真是个恶心人的东西
为了解决除法取模,我们当然可以把a/b计算出来
但是误差太大了
于是乘法逆元应运而生,这玩意能把除法换成乘法,然后取模
具体就是
把(a/b) mod c变成(a*(b的逆元)) mod c
这道题是要求我们用线性时间求出一堆数的逆元
下附代码
代码:
#include <bits/stdc++.h> using namespace std; long long n,p; long long inv[3000050]; int main() { scanf("%lld%lld",&n,&p); inv[1]=1; cout << 1 << endl; for(int i=2;i<=n;i++) { inv[i]=(long long)(p-p/i)*inv[p%i]%p; printf("%lld\n",inv[i]); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架