from functools import
reduce
import sympy
defcrt
(n, a)
:sum=0
prod =
reduce
(lambda a, b: a * b, n)
#reduce(function,n):將資料集合n(可以是列表,也可以是元組等)的前兩個資料做function函式運算,然後將結果與n中的後乙個元素做function運算,最後會返回乙個結果.
for n_i, a_i in
zip(n, a)
:#zip(a,b)將a,b中的資料打包成元組的列表[(a1,b1),(a2,b2),(a3,b3)......]
p = prod // n_i
sum+= a_i * sympy.invert(p, n_i)
* p return
int(
sum% prod)
#,其中n是模數,a是餘數.
#中國剩餘定理可以得到乙個最小的滿足方程組的解.
'''假設mult[i]表示除n[i]的其他n中的元素的積
sum(a[i]*invert(mult[i],n[i])*mult[i])%(mult[i]*n[i])其中i=0,1,2,3,4,5......
'''
中國剩餘定理(除數不互質)
對於 x mod 1 a 1 x mod 2 a 2 x mod 3 a 3 mod i 之間不一定互質,求解最小x。對於 mod i 之間不一定互質的情況,需要將剩餘定理修改一點。對於第乙個方程 x 0 mod 0 a 0 可知 x 0 的最小解即為 a 0 對於第二個方程x 1 mod 1 a ...
中國剩餘定理 模版(互質版)
1079 中國剩餘定理 基準時間限制 1 秒 空間限制 131072 kb 分值 0 乙個正整數k,給出k mod 一些質數的結果,求符合條件的最小的k。例如,k 2 1,k 3 2,k 5 3。符合條件的最小的k 23。input 第1行 1個數n表示後面輸入的質數及模的數量。2 n 10 第2 ...
中國剩餘定理 擴充套件中國剩餘定理
中國剩餘定理 對於求解一元不定方程組 的一種演算法叫做中國剩餘定理。又名孫子定理。其中m1,m2,m3.mk 為兩兩互質的整數,求x的最小非負整數解 令m mi 1 i n m是所有mi的最小公倍數 ti為同餘方程 ti m mi 1 mod mi 的最小非負整數解 則有乙個解 x ai m mi ...