首页 > 其他分享 >逆元

逆元

时间:2023-07-30 21:22:05浏览次数:31  
标签:return int res 逆元 ans mod

 

同余:

简单来说就是在除法中取模要找到其逆元

 

逆元:如果一个线性同余方程ax ≡ 1( mod b),则x称为a mod b的逆元

简单来说就是mod b是一种环境,而所求的x是a在mod b环境中的倒数

 

以下是求逆元的法子

  • 扩展欧几里得法求逆元,时间复杂度o(logn)
1 void exgcd(int a, int b, int& x, int& y) {
2   if (b == 0) {
3     x = 1, y = 0;
4     return;
5   }
6   exgcd(b, a % b, y, x);
7   y -= a / b * x;
8 }
  • 欧拉定理

若a和b互质,则有 a^(φ(b))≡1(mod b),其中φ(b)为欧拉函数

所以a^(φ(b)-1)为a在mod b环境下的逆元

 1 int qpow(int a,int b,int mod){
 2     int ans=1,res=a%mod;
 3     while(b){
 4         if(b&1)    ans=ans*res%mod;
 5         res=res*res%mod;
 6         b>>=1;
 7     }
 8     return ans%mod;
 9 }
10 int inv(int a,int mod){
11     return qpow(a,φ(b)-1,mod)%mod;
12 }
  • 费马小定理

若b为素数,则存在a^(b-1)≡1(mod b)

公式与欧拉定理类似

 1 int qpow(int a,int b,int mod){
 2     int ans=1,res=a%mod;
 3     while(b){
 4         if(b&1)    ans=ans*res%mod;
 5         res=res*res%mod;
 6         b>>=1;
 7     }
 8     return ans%mod;
 9 }
10 int inv(int a,int mod){
11     return qpow(a,mod-2,mod)%mod;
12 }
  • 线性求逆元

当所求的逆元有很多的时候,可能会t,线性复杂度o(n)

1 inv[1] = 1;
2 for (int i = 2; i <= n; ++i) {
3   inv[i] = (long long)(mod - mod / i) * inv[mod % i] % p;
4 }

只学了这些。。

标签:return,int,res,逆元,ans,mod
From: https://www.cnblogs.com/DLSQS-lkjh/p/17592065.html

相关文章

  • 乘法逆元
    在数论中,如果a和m是正整数,且它们互质,那么a在模m意义下的逆元是一个正整数x,满足ax≡1(modm)。也就是说,x是一个整数,满足ax除以m的余数为1。求解a模m意义下的逆元有多种方法,其中一种常见的方法是使用快速幂算法。以下是使用快速幂算法求解a模m意义下的逆元的示例代码:int64_tmo......
  • [数学]乘法逆元
    1.定义逆元素,是指一个可以取消另一给定元素运算的元素,在数学里,逆元素广义化了加法中的加法逆元和乘法中的倒数。如果说a在模p意义下的乘法逆元是x,那么ax≡1(modp)2.求逆元的方法·扩展欧几里得同余方程的转化扩展欧几里得的求解代码如下#include<bits/stdc++......
  • O(n)求逆元
    结论\(inv[i]=(mod−mod/i)\timesinv[mod\%i]\%mod\)证明设\(t=mod/i,k=mod\%i\)则有:\(t\timesi+k\equiv0\quad\%mod\)有:\(−t∗i\equivk\quad\%mod\)两边同时除以i∗ki∗k得到:\(−t∗inv[k]\equivinv[i]\quad\%mod\)......
  • 求逆元
    1.线性求\(i\)的逆元for(inti=2;i<=N;++i){inv[i]=(mod-mod/i)*inv[mod%i]%mod;}2.费马小定理求\(i\)的逆元inv[i]=QucikPower(i,mod-2);扩展欧几里得求\(i\)的逆元......
  • 浅谈同余1(常用定理和乘法逆元)
    点个赞吧,球球了~下一篇:$浅谈同余2(扩展欧几里得,中国剩余定理,BSGS)$https://www.acwing.com/file_system/file/content/whole/index/content/7882318/ $\LaTeX$太多了,分成几个部分0x00总写(瞎说)同余是数学中非常重要的东西,这里会写出同余的基本运用若$a\bmodm=b\bmo......
  • 在线 $\Theta(1)$ 逆元
    //createdon23.04.30目录在线O(1)逆元在线O(1)逆元给定质数模数\(p\),多次查询一个数\(a\)的逆元,强制在线。我们有一个\(O(p^{\frac{2}{3}})\)的预处理,\(O(1)\)查询的做法。Farey序列即\(F_n\)表示所有分母不超过\(n\)的最简真分数构成的有序数列(左右端......
  • 初等数论——素数,逆元,EXGCD有关
    初等数论素数定义设整数\(p\ne0,\pm1\)。如果\(p\)除了平凡约数以外没有其他约数,那么称\(p\)为素数(不可约数)。若整数\(a\ne0,\pm1\)且\(a\)不是素数,则称\(a\)为合数。——————OIWiki素数的判定(素性测试)如何判断一个数\(x\)是不是质数?很显然我们可......
  • 在线 $\Theta(1)$ 逆元
    最近看到这个题,想到了一种比较简单的做法。首先,我们考虑给\(x\)乘以一非零整数\(u\),如果我们能求出\(\frac{1}{xu}\),我们就可以通过再乘以\(u\)得到答案。考虑让\(u\)和\(xu\bmodp\)比较接近\(0\),预处理\(|k|\)比较小的所有\(\frac{1}{k}\)。考虑分块:设\(x=......
  • hdu:求和(逆元)
    ProblemDescriptionApex实验室里培养了很多种类的细菌。细菌的繁殖遵循如下规则:第k种细菌在第t个单位时间内新增的数量为k^t。例如,k=2,t=4时,第种细菌的总数为2+4+8+16。现在,实验室里一共有n种细菌,分别为1,2,3,…,n。在第1单位时间结束后,第k种细菌的个数为k个。求第m个单位时......
  • 扩展欧几里得算法与乘法逆元
    扩展欧几里得算法基本知识整除的基本定义与性质定义\(设a,b∈Z且a≠0,若b除以a余数为0,则称a整除b,记为a∣b。若a不能整除b,则称a\nmidb。\)性质1\(a∣b⟺−a∣b⟺a∣−b⟺|a|∣|b|。\)性质2\(a∣b且b∣c⇒a∣c。\)性质3\(c∣a且c∣b⇒c∣na+mb......