博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
luogu P3811线性求逆元
阅读量:5036 次
发布时间:2019-06-12

本文共 1521 字,大约阅读时间需要 5 分钟。

首先扩O:T了一个点(因为上界松),83分。

#include 
using namespace std;int n, p;void exgcd(int a, int p, int &b, int &x){ if (p==0){ b=1, x=0; return; } exgcd(p, a%p, b, x); int tmp=b; b=x; x=tmp-a/p*x; return;}int main(){ scanf("%d%d", &n, &p); int x, y; for (int i=1; i<=n; ++i){ exgcd(i, p, x, y); printf("%d\n", (x+p)%p); } return 0;}

然后费马,事实证明果然更慢,上界很紧。

#include 
using namespace std;int n, p;int expower(int a, int pow, int mod){ int ans=1; while (pow){ if (pow&1) ans=1LL*ans*a%mod; a=1LL*a*a%mod; pow>>=1; } return ans;}int main(){ scanf("%d%d", &n, &p); for (int i=1; i<=n; ++i){ printf("%d\n", expower(i, p-2, p)); } return 0;}

正解:首先$1^{-1} \equiv 1 \pmod p$

我们设:$p = k\cdot i + r,~r < i,~1 < i < p$

将其放在模p意义下:$k\cdot i + r \equiv 0 \pmod p$

两边同乘i-1,r-1就会得到:

$\begin{eqnarray*} k\cdot r^{-1} + i^{-1} &\equiv& 0 &\pmod p\\ i^{-1} &\equiv& -k\cdot r^{-1} &\pmod p\\ i^{-1} &\equiv& -\left\lfloor\frac{p}{i}\right\rfloor\cdot \left(p\bmod i\right)^{-1} &\pmod p\ \end{eqnarray*}$

于是核心代码就一行: 

A[i] = -(p / i) * A[p % i];

我的代码:

注意:有可能是负数

#include 
using namespace std;const int maxn=3000000;int n, p, a[maxn];int main(){ scanf("%d%d", &n, &p); a[1]=1; printf("%d\n", a[1]); for (int i=2; i<=n; ++i){ a[i]=(1LL*-(p/i)*a[p%i])%p; a[i]=(a[i]+p)%p; printf("%d\n", a[i]); } return 0;}

转载于:https://www.cnblogs.com/MyNameIsPc/p/7357327.html

你可能感兴趣的文章
js事件基础
查看>>
玩转CPU Topology
查看>>
jquery实现可以中英切换的导航条
查看>>
ConcurrentHashMap源码解析(JDK1.8)
查看>>
设计模式之中介者模式
查看>>
JavaScript动态清除
查看>>
SVN的忽略和只读使用方法学习记录
查看>>
smartupload 上传与下载(转载)
查看>>
Module
查看>>
Android TextView : “Do not concatenate text displayed with setText”
查看>>
SpringCloud Feign异常处理
查看>>
python接口自动化测试三十五:用BeautifulReport生成报告
查看>>
Microsoft Visual Studio is waiting for an internal operation to complete 解决方法
查看>>
Spark Streaming笔记整理(二):案例、SSC、数据源与自定义Receiver
查看>>
组播业务开通
查看>>
Java开发技术大揭底——让你认知自己技术上的缺陷,成为架构师
查看>>
MySQL:如何维护binlog?
查看>>
Android Studio 的常用设置
查看>>
Pythonic八荣八耻
查看>>
p2.BTC-数据结构
查看>>