zoukankan      html  css  js  c++  java
  • 同余、中国剩余定理

    同余:a≡b (mod m),表示a % m==b % m

    同余式的运算法则:

    --------------------------------------------------------------------------------------------------------------

    中国剩余定理出自《孙子算经》中的一个问题:
      有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?
    这道题实际上就是解这么一个同余方程组:
    x≡2 (mod 3)
    x≡3 (mod 5)
    x≡2 (mod 7)  求解x

    中国剩余定理:求解同余方程组
    n≡a[1] (mod m[1])
    n≡a[2] (mod m[2])
    ......
    n≡a[i]  (mod m[i])
    该方程组有解的条件:m[i]两两互质


    至于该方程的解法,wikipedia上解释得很详细:

     1  int extend_gcd(int a,int b,int &x,int &y){
     2      if (b==0){
     3          x=1;y=0;
     4          return a;
     5      }
     6      else{
     7          int r=extend_gcd(b,a%b,y,x);
     8          y=y-x*(a/b);
     9          return r;
    10      }
    11  }
    12  
    13  int CRT(int a[],int m[],int n)
    14  {
    15      int M=1;
    16      for (int i=1;i<=n;i++) M*=m[i];
    17      int ret=0;
    18      for (int i=1;i<=n;i++)
    19      {
    20          int x,y;
    21          int tm=M/m[i];
    22          extend_gcd(tm,m[i],x,y);
    23          ret=(ret+tm*x*a[i])%M;
    24      }
    25      return (ret+M)%M;
    26  }
    27 
    28  

    //Reference:http://blog.csdn.net/cyendra/article/details/38402869
        中国剩余定理还有一种迭代解法:
        Reference:http://scturtle.is-programmer.com/posts/19363.html

  • 相关阅读:
    sosex !mk
    使用boost iostream写文件
    编译ios版本的ffmpeg0.11.1
    转换日期为中文数字
    sosex !muf查看方法的反汇编代码
    Xcode 4.5.2 + iOS 6.0免证书(iDP)开发+真机调试+生成IPA全攻略
    sosex查看变量的命令!mdt
    vs2012编译openssl
    为ios编译openssl
    打开的页面关闭后刷新主页面
  • 原文地址:https://www.cnblogs.com/pdev/p/4067291.html
Copyright © 2011-2022 走看看