zoukankan      html  css  js  c++  java
  • 【数论-逆元】复习总结

    一直想写总结类博客来着,但是拥有重度拖延症的我还是一拖再拖,不禁要感慨一下,去年暑假学的好多知识都忘得一干二净了(失忆(°Д°)?),都大二了算法还是学的一塌糊涂╮(╯_╰)╭真是罪过啊。。然鹅,不会的还是要补上嘛,哈哈

    昨天复习了下扩展欧几里得和乘法逆元的知识,虽然都是基础,还是希望对以后的复习与回忆有所帮助

    1.a能整除b,代表b/a=整,即a|b
    同余符号 ≡
    含义
    两个整数a,b,若它们除以整数m所得的余数相等,则称a,b对于模m同余
    记作a≡b(mod m)
    读作a同余于b模m,或读作a与b关于模m同余。
    比如26≡14(mod 12)。
    定义
    设m是大于1的正整数,a,b是整数,如果m|(a-b),则称a与b关于模m同余,记作a≡b(mod m),读作a同余于b模m。
    显然,有如下事实:
    (1)若a≡0(mod m),则m|a;
    (2)a≡b(mod m)等价于a与b分别用m去除,余数相同。
    以下性质加深理解
      1).反身性:a≡a (mod m);
      2).对称性:若a≡b(mod m),则b≡a (mod m);
      3).传递性:若a≡b(mod m),b≡c(mod m),则a≡c(mod m);
      4).线性运算:如果a ≡ b (mod m),c ≡ d (mod m),那么
        (1)a ± c ≡ b ± d (mod m);
        (2)a * c ≡ b * d (mod m)。
      5).除法:若ac≡bc(modm),c!=0,则a≡b(modm/gcd(c,m)),特殊地,gcd(c,m)=1则a≡b(modm);
      6).幂运算:如果a≡b(modm),那么a^n≡b^n(modm);

    2.扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式: ax+by = gcd(a, b)

    3.费马小定理:假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p)。
    可以这样理解,∵a^p≡a(mod p),根据1性质5,即a^(p-1)≡1(mod p)

    4.乘法逆元,是指数学领域群G中任意一个元素a,都在G中有唯一的逆元a’,具有性质a×a'=a'×a=e,其中e为该群的单位元。若ax≡1 mod f, 则称a(关于1)模f的乘法逆元为x(即x为a的逆元)。也可表示为ax≡1(mod f)。
    当a与f互素时,a模f的乘法逆元有解。如果不互素,则无解。如果f为素数,则从1到f-1的任意数都与f互素,即在1到f-1之间都恰好有一个关于模f的乘法逆元。

    对于利用拓展欧几里得算法求逆元,很显然,如果bx%p=1,那么 bx+py=1, 直接利用gcd(b, p, x, y),则 (x%p+p)%p(x%p+p)%p 即为 b 的逆元。

    对于第二种方法,因为在算法竞赛中模数p总是质数,所以可以利用费马小定理:

     可以直接得到 b 的逆元是 b^(p−2) , 使用 快速幂 求解即可。
     

    但是,逆元有什么用呢?
    (a + b) % p = (a%p + b%p) %p (对)

    (a - b) % p = (a%p - b%p) %p (对)

    (a * b) % p = (a%p * b%p) %p (对)

    (a / b) % p = (a%p / b%p) %p (错)
    题目要求结果(a/b)%mod = (a%mod * b模mod的逆元)%mod
    用扩欧算ax+by=c形式的乘法逆元需要乘以c/gcd(a,b),如果是求最小正乘法逆元,公式为(x%b+b)%b,结果如果为0就加上一个b

  • 相关阅读:
    Image Perimeters(图像周长)
    Power Strings(字符串的n次方)
    滑雪
    剪花布条
    SOJ题目分类
    Catch That Cow(捉住那头牛)
    Seek the Name, Seek the Fame(找名字,要成名)
    Avoid The Lakes(躲开湖水区)
    hash相关理论
    JAVASCRIPT共通関数数値チェック
  • 原文地址:https://www.cnblogs.com/lesroad/p/8435044.html
Copyright © 2011-2022 走看看