标签:sp bs ui nbsp hdu c 元素 没有 扩展
对于 ax≡b( mod n ) 转化为 ax - ny = b , 当 d = gcd( a, n ) 不是 d 的约数的时候不存在解,为何不存在解呢?
设 a = k1*d , n = k2*d .
那么式子可转化为 : d * (k1*x - k2*y) = b , 若 b % d != 0 ,即( k1*x - k2*y )无整数解。
否则,两边除以d , 得到 a‘x-n‘y = b‘ , 即么 a‘x≡b‘(mod n‘) ( 这里a‘和n‘ 已经是互素的 ),两边再乘上一个
a‘ 在 n‘ 下的逆 , 得到 x ≡ a‘^(-1) * b‘ ( mod n‘ ) .... 然后要转化为在 n 剩余系中的元素。
令 a‘^(-1)*b‘ = p , 上述解相当于 x = p , p+n‘ , p+2*n‘ ....... 对于模n来说,这无穷多个解里面有多少个等价类呢?
假定 p+i*n‘ 与 p+j*n‘ 同余,则 (p+i*n‘) - (p+j*n‘) = (i-j) * n‘ 是 n 的倍数, 那么i-j必然是 d 的倍数 ( n‘ * d = n )。
即,在模n的剩余系当中 , ax≡b( mod n ) 的解有 d 个 ,为 p , p+n‘ ,p+2*n‘ ...... ,p+(d-1)*n‘ 。
[ p+d*n‘ 与 p 已经属于同一个等价类了]...
看完这里...突然想到之前做了一条 hdu 3579...
给出 n 个 ai , ri ... 都有 x≡ri ( mod ai )...求最小的x..
这个是中国剩余定理的加强..它没有给出 ri 之间互素的性质..
解法是两两解线性模方程..
对于两个方程,易得 a1*x - a2*y = r2 - r1 ...
设(r2-r1)= c , 通过扩展欧几里得解出 x 之后 , 先判 d=gcd( a1,a2 ) 是否是c的约数..
各项除去d 得到 a1‘*x - a2‘ *y = c‘ ... 转换后得到 a1‘x = c‘ ( mod a2‘ )....
根据上述的模方程我们可以知道 方程ax=b (mod n)的最小解 : x = ( x * ( b / d ) ) % n ...
标签:sp bs ui nbsp hdu c 元素 没有 扩展
原文地址:http://www.cnblogs.com/hlmark/p/4066256.html