1.逆元是个什么东西
首先这里有个式子: ((( ab\frac{a}{b}ba​ ))) modmodmod ppp,这个式子的答案怎么求呢??
A 直接求不行吗?
Q别想了不能。我们发现一个分数 mod 一个整数时是不能直接模运算的,但是可以进行乘法运算,我们就要用到逆元(大概可以看做一个数%p意义下的倒数吧)
除以一个数模ppp,就等于乘以一个数在mod p意义下的逆元
也就是说,它的定义可以表示为ax≡1ax≡1ax≡1 (mod(mod(mod n)n)n)
2. 求逆元的方法之——费马小定理

  1. 费马小定理:对于整数 a 与质数 p ,若 a 与 p 互质,则有: ap−1≡1a^{p−1}≡1ap−1≡1 modmodmod ppp
  2. 求逆元:ap−1≡1a^{p−1}≡1ap−1≡1 modmodmod ppp故ap−2∗p≡1a^{p−2}*p≡1ap−2∗p≡1 modmodmod ppp,所以ap−2a^{p−2}ap−2为aaa modmodmod ppp意义下的逆元
  3. 代码(就是个快速幂)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
ll a,b,p,r;
ll n;
ll ksm(ll a,ll b,ll p)
{ll r=1;while(b){if(b&1)r=r*a%p;b>>=1;a=a*a%p;    }return r;
}
int main()
{cin>>n>>p;for(int i=1;i<=n;i++)
{ll hh=ksm(i,p-2,p);cout<<hh<<endl;}
}

3.方法二——扩展欧几里得

  1. exgcd可以用来判断并求解形如ax+by=cax+by=cax+by=c 的方程,当且仅当gcd(a,b)∣cgcd(a,b)∣cgcd(a,b)∣c,存在整数解x,yx,yx,y
  2. 证明:扩欧证明
  3. 求逆元:
    设mmm为aaa的逆元,那么有am≡1(am≡1(am≡1( modmodmod p)p)p)
    那么显而易见地我们可以写成am−pn=1am-pn=1am−pn=1
    然后就可以exgcd解啦
  4. 代码
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
void read(int &x)
{int f=1;x=0;char s=getchar();while(s>'9'||s<'0'){if(s=='-')f=-1;s=getchar();}while(s<='9'&&s>='0'){x=x*10+s-'0';s=getchar();}x=f*x;
}
int n,p;
void exgcd(int a,int b,int &x,int &y)
{int t;if(b==0){x=1;y=0;return;}exgcd(b,a%b,x,y);t=x;x=y;y=t-(a/b)*y;
}
int main()
{read(n);read(p);register int x,y;for(int i=1;i<=n;i++){exgcd(i,p,x,y);cout<<(x+p)%p;putchar('\n');}
}

4.线性求逆元
虽然已经有2种方法,但是对于这样的题模板还是会TTT
于是我们不得不学习线性逆元
就可以使用递推法 。

iii 模 ppp 意义下的逆元 inv(i)inv(i)inv(i)可表示为 :

inv(i)=−⌊pi⌋×inv(p%i)%p\large inv(i) = -\lfloor \frac{p}{i}\rfloor \times inv(p\% i)\% pinv(i)=−⌊ip​⌋×inv(p%i)%p

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
void read(int &x)
{int f=1;x=0;char s=getchar();while(s>'9'||s<'0'){if(s=='-')f=-1;s=getchar();}while(s<='9'&&s>='0'){x=x*10+s-'0';s=getchar();}x=f*x;
}
int n,p;
ll a[5000005];
int main()
{read(n);read(p);a[1]=1;for(int i=2;i<=n;i++){a[i]=(ll)p-(p/i)*a[p%i]%p;}for(int i=1;i<=n;i++)printf("%d\n",a[i]);
}

没了qwq没了qwq没了qwq

关于逆元(费马小定理,exgcd)相关推荐

  1. 除法取模与逆元/费马小定理

    对于正整数和,如果有,那么把这个同余方程中的最小正整数解叫做模的逆元. 逆元一般用扩展欧几里得算法来求得,如果为素数,那么还可以根据费马小定理得到逆元为.(都要求a和m互质) 推导过程如下(摘自Acd ...

  2. 子段乘积(逆元费马小定理)+线段树做法

    题解:一开始做这个题的时候想过尺取法,但是因为没有逆元的知识,不知道该如何不断删除左端元素.其实这题并不难想,设l,r为两端开始都置为1,当长度小于k的时候不断乘右端元素并取余,当长度等于k时删除左端 ...

  3. 逆元+费马小定理+扩展欧几里得

    逆元:(即是逆元素)逆元素是指一个可以取消另一给定元素运算的元素. 在一个代数系统(S,*)中,存在单位元素e,如果对S内的元素a存在a^-1 * a = e,则将 a^-1称为a 的左逆元. 同理若 ...

  4. 计算系数(二项式定理逆元费马小定理)

    给定一个多项式(ax+by)^k,请求出多项式展开后(x^n)*(y^m)项的系数. 输入格式 共一行,包含 5 个整数,分别为 a,b,k,n,m,每两个整数之间用一个空格隔开. 输出格式 输出共 ...

  5. jzoj4229-学习神技【逆元,费马小定理】

    正题 题目大意 求 (∑i=1na∗qi)mod(109+7)(\sum_{i=1}^na*q^i)\ mod\ (10^9+7)(i=1∑n​a∗qi) mod (109+7) 解题思路 题目里都给 ...

  6. 取模除法(逆元)(费马小定理)(线性求逆元)

    文章目录 引言 逆元 费马小定理 内容 应用 证明 线性求逆元 thanks for reading! 引言 我们做题时经常会由于答案过大,被要求使答案对一个质数取模 我们都知道,加和乘对取模是没有影 ...

  7. 费马小定理以及快速幂应用

    费马小定理 定理 例子 代码 逆元 快速幂代码 快速幂求逆元 定理 假设p为质数,a不是p的倍数,则有 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv 1(mod \spa ...

  8. 同余定理 逆元 中国剩余定理 费马小定理

    同余定理 同余定理是数论中的重要概念.给定一个正整数m,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m). 两个整数a ...

  9. luogu P2613 【模板】有理数取余(费马小定理,乘法逆元)

    整理的算法模板合集: ACM模板 目录 题目传送门 题目传送门 相当于是一个高精的费马小定理求乘法逆元.虽然数据达到了101000110^{10001}1010001,但是我们可以使用快读然后一直模m ...

最新文章

  1. 参加软件测试培训前景怎么样
  2. ie下LI的间距问题
  3. 三角形内随机生成一个点
  4. 87说明书 ikbc_女性玩家的首选!——IKBC白无垢. 樱机械键盘赏评
  5. web面试常见问题补充
  6. java api 第一个类是_JAVA常用API:String 类的常用方法
  7. Vue-cli 自定义配置
  8. 火狐浏览器允许ajax,ajax如何解决火狐浏览器或其它非ie浏览器的兼容性问题
  9. 下一代Jquery模板-----JsRender
  10. consul服务注册与服务发现的巨坑
  11. mac 发现 添加 连接 局域网内打印机
  12. R语言:时间序列ARIMA模型使用
  13. MobaXterm快捷输入
  14. 网络编程day1-本地信息的获取
  15. 网页调用QQ客服的API
  16. html5 游戏 黑屏,战地5游戏最新黑屏无限加载解决方法
  17. ”周期天王”20大预言,针针见血,看完整个人通透多了
  18. linux strip作用,linux gcc strip命令简介
  19. 一个tesseract ocr box 文件查看toy,python
  20. 微信小程序内,生成自定义二维码

热门文章

  1. 如何在 Mac 上的照片中创建幻灯片
  2. 最适合小白的matlab教程系列_进阶系列二之多项式
  3. C++习题--整数对调
  4. Git版本管理软件使用
  5. 机械键盘到底要不要买?秒懂!
  6. 智博会闪耀山城 复杂美获大会重磅荣誉
  7. Spring:更简单的存储与读取Bean对象
  8. 深度学习 目标检测01
  9. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java网约车在线系统hi3q0
  10. MATLAB 方程式求根