Chinese Remainer Theorem - 中国剩余定理


问题

对于非负整数,给定组正整数的除数和余数)满足:

其中所有余数两两互质。设所有余数的乘积为:

因为任意两个余数互质,显然

这样的方程组即为数论中的一元线性同余方程组:

数论倒数/模倒数/模逆元

首先介绍数论倒数,三个整数满足:

即:

则称关于的数论倒数,也称模倒数、模逆元。显然即为关于的模逆元,可以通过Euclid求出。

中国剩余定理

用中国剩余定理求解一元线性同余方程组。设除了之外所有余数的乘积为:

因为所有余数两两互质,因此存在关于的模逆元,即:

可得方程组的通解形式为:

其中为整数,

对于取模,则有唯一解:

该算法的时间复杂度为


源码

ChineseRemainerTheorem.h

ChineseRemainerTheorem.cpp

测试

ChineseRemainerTheoremTest.cpp