zoukankan      html  css  js  c++  java
  • 中国剩余定理模板

     1 /*
     2 同余方程组 : 
     3 设正整数m1.m2.mk两两互素,则方程组
     4 x ≡ a1 (mod m1)
     5 x ≡ a2 (mod m2)
     6 x ≡ a3 (mod m3)
     7 .
     8 .
     9 x ≡ ak (mod mk)
    10 有整数解,
    11 解为  x ≡ (a1 * M1 * 1/M1 + a2 * M2 * 1/M2 + a3 * M3 * 1/M3 + …… +ak * Mk * 1/Mk) mod M
    12 其中 M = M1 * M2 * M3 * …… * Mk, Mi为M/mi, 1/Mi为Mi的逆元
    13 */
    14 
    15 void exgcd(int a, int b, int &x, int &y)
    16 {
    17     if(b == 0) {
    18         x = 1;
    19         y = 0;
    20         return a;
    21     }
    22     exgcd(b, a % b, x, y);
    23     int t = x;
    24     x = y;
    25     y = t - a / b * y;
    26     return r;
    27 }
    28 
    29 LL CRT(int m[], int a[], int n)  // m 是 mod 的数, a 是余数, n 是方程组组数
    30 {
    31     LL M = 1, ans = 0;
    32     for(int i = 0; i < n; i++)
    33         M *= m[i];
    34     for(int i = 0; i < n; i++) {
    35         int x, y;
    36         LL Mi = M / m[i];
    37         exgcd(Mi, m[i], x, y); //求出的 x 即 Mi 的逆元
    38         ans = (ans + Mi * a[i] * x % M + M) % M;
    39     }
    40     return ans;
    41 }
  • 相关阅读:
    云计算 备忘录
    python 备忘录
    Linux 备忘录
    appium自动化的一个实例
    appium环境的搭建
    四则运算2单元测试
    四则运算2
    四则运算2程序设计思路
    上课未及时完成的原因
    随机生成30道四则运算题程序设计
  • 原文地址:https://www.cnblogs.com/fightfordream/p/5774556.html
Copyright © 2011-2022 走看看