【ICPC模板】中国剩余定理(Chinese Remander Theorem, CRT)

中国剩余定理描述的是一种求解一元线性方程同余组的方法,形如下图:

使用这一方法有一个前提是:对于任意两个模数m[i]和m[j](注:此处[]中的内容表示下标),应有gcd(m[i], m[j]) = 1,即二者互素。

中国剩余定理的核心是“构造”,它给出了一种构造此类方程组解的方法。

令M表示全体模数m[i]的乘积,用M[i]表示全体模数的乘积M除以m[i]的值(即除了第i个模数m[i]之外所有模数的乘积)。接着令t[i]表示M[i]对m[i]取模的逆元,此时有t[i] * M[i]模除m[i]后余数为1.

接着,使用a[i]乘上t[i] * M[i],得到的结果(即a[i] * t[i] * M[i])具有这样的性质:如果将它对m[i]取余,则因为t[i] * M[i]对m[i]取余是1,因此a[i] * t[i] * M[i]对m[i]取余得到a[i];如果将它对排除m[i]之外任意一个模数(后面用m[j]表示)取模,因为M[i]表示排除m[i]之后所有模数的乘积,可知m[j]是M[i]的因数,那么m[j]就可以整除a[i]*t[i]*M[i],余数为0.

根据这样的性质,将所有的a[i] * t[i] * M[i]加和就得到这个方程组的一个解,实际上它加减任意个M都是这个方程组的解。

解的通式符号表示如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值