同余方程&孙子定理&模线性同余方程

参考博客

Acdreamer


一次同余方程

axb(mod n) a ∗ x ≡ b ( m o d   n )

这里写图片描述
分情况讨论


  1. 若有 (a,n)=1 ( a , n ) = 1 ,根据 欧几里得扩展,存在 l,m使得 al+nm=1 a ∗ l + n ∗ m = 1 ,等式两边同时模n,得 al1(mod n) a ∗ l ≡ 1 ( m o d   n ) ,对于
    axb(mod n) a ∗ x ≡ b ( m o d   n )
    alxbl(mod n) a ∗ l ∗ x ≡ b ∗ l ( m o d   n )
    xbl(mod n) x ≡ b ∗ l ( m o d   n )

  1. 若有 (a,n)=d ( a , n ) = d , 对于
    axb(mod n) a ∗ x ≡ b ( m o d   n )

移项

axb0(mod n) a ∗ x − b ≡ 0 ( m o d   n )

n|(axb) n | ( a ∗ x − b )

已知
d|a,d|n d | a , d | n

于是
d|b d | b

所以同余方程有解的条件是 d|b d | b
a1=a/d,b1=b/d,n1=n/d a 1 = a / d , b 1 = b / d , n 1 = n / d
则有
n1|(a1xb1) n 1 | ( a 1 ∗ x − b 1 )

即为
a1xb1(mod n1)     (a1,n1)=1 a 1 ∗ x ≡ b 1 ( m o d   n 1 )           且 ( a 1 , n 1 ) = 1

就变成情况1,可以解出此时的
xb1l(mod n1) x ≡ b 1 ∗ l ( m o d   n 1 )

x=b1l+n1t x = b 1 ∗ l + n 1 ∗ t
t的取值范围 为(0,d-1)


中国剩余定理

解线性同余方程,运用拉格朗日插值法,得孙子定理
这里写图片描述

模板
int m[maxn];
int  China(int a[],int n,int b[])//其中a[]是模数,b[] 是余数
{
    int M = 1;
    for(int i = 0;i < n;++i)
        M *= a[i];
    int ans = 0;
    for(int i = 0;i < n;++i)
    {
        int Mi = M/a[i];
        LL x,y;
        ex_gcd(Mi,a[i],x,y);
        ans += b[i] * x*Mi;
    }
    ans = (ans%M + M) %M;
    return ans;
}
扩展

合并两个模数
假设
          y=a1(mod m1) y = a 1 ( m o d   m 1 )
         y=a2(mod m2) y = a 2 ( m o d   m 2 )

         xa1+t1m1;1 x ≡ a 1 + t 1 ∗ m 1 ; ( 1 )
         xa2+t2m2;2 x ≡ a 2 + t 2 ∗ m 2 ; ( 2 )
两式相减得         t1m1t2m2=a1a23 t 1 ∗ m 1 − t 2 ∗ m 2 = a 1 − a 2 ( 3 )
        利用欧几里得扩展求出 t1 t 1 带入(1) 求出一个特解 x x

y=x(mod lcm(m1,m2))

证明 x与y同余于 lcmm1,m2) l c m ( m 1 , m 2 )
m1|xy m 1 | x − y
m2|xy m 2 | x − y
所以 lcm(m1,m2)|xy l c m ( m 1 , m 2 ) | x − y ,所以x和y关于 lcm(m1,m2) l c m ( m 1 , m 2 ) 同余

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值