码迷,mamicode.com
首页 > 其他好文 > 详细

乘法逆元(模板)

时间:2020-02-05 11:41:31      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:strong   sys   next   int()   pow   ret   possible   oid   info   

乘法逆元定义:

技术图片

 

 b存在乘法逆元的充要条件是b与模数m互质 原因:b * x ≡ 1 (mod m) 如果b和m不互质,则 b * x肯定是m的倍数,b * x%m=0

 所以b%m==0 ,b不存在乘法逆元

1.当n为质数时,可以用快速幂求逆元:

  a / b(整除) ≡ a * x (mod m)

  两边同乘b可得 a ≡ a * b * x (mod m) -> 1 ≡ b * x (mod m)

  同 b * x ≡ 1 (mod m)

  由费马小定理可知,当m为质数时:  b ^ (m - 1) ≡ 1 (mod m)

       拆一个b出来可得 b * b ^ (m - 2) ≡ 1 (mod m)

     所以当n为质数时,b的乘法逆元 x = b ^ (m - 2)%m

求a的乘法逆元:

import java.util.*;

public class Main{
        static long quick_pow(long a,long b,long c){
                long res=1;
                while(b>0){
                        if((b&1)==1) res=res*a%c;
                        a=a*a%c;
                        b>>=1;
                }
                return res;
        }
        public static void main(String[] args) {
                Scanner scan=new Scanner(System.in);
                int t=scan.nextInt();
                while(t-->0){
                        long a=scan.nextLong();
                        long p=scan.nextLong();
                        if(a%p!=0) System.out.println(quick_pow(a,p-2,p));
                        else System.out.println("impossible");
                }
        }
}

 

乘法逆元(模板)

标签:strong   sys   next   int()   pow   ret   possible   oid   info   

原文地址:https://www.cnblogs.com/qdu-lkc/p/12262827.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!