小学二年级都能看懂的 乘法逆元学习笔记
介绍
在做题的时候,经常会遇见让我们将答案取模的情况。如果计算过程只涉及加减乘还好说,边算边取模即可。但是计算时经常不可避免的会出现除法,而
也就是说,我们需要找到一个数
---
原理
要求出
我们不妨令
①式两边乘上
将③带入②即可得到:
由于
即
也就是说,当
---
求解
那么,知道逆元的定义后,怎么求解逆元呢?
扩展欧几里得算法
由于
即
即
我们令
原式就被我们化成了一个不定方程
就可以通过扩展欧几里得算法求出
代码如下
#define ll long long const ll p=1e9+7 void exgcd(ll a,int b,ll &x,ll &y){ if(!b){ x=1,y=0; } else{ exgcd(b,a%b,y,x); y-=x*(a/b); } } ll ny(ll a){ ll x,y; exgcd(a,p,x,y); return (x+p)%p; }
不过由于
所以当
所以一般题目取模的时候都会模一个质数
不过如果碰上二般的题目还要求除法的时候,那就只能各显神通了
费马小定理
根据费马小定理:如果p是一个质数,而整数
非常显然,当
代码如下:
#define ll long long const ll p=1e9+7 ll power(ll a, ll n)//快速幂 { ll res=1; for(;n>0;n>>=1){ if(n&1) res*=a; a*=a,a%=p,res%=p; } return ans; } ll ny(ll a) { return pow(a, p - 2); }
---
应用
不就在开头吗
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】