模方程

  对于 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 ...

  

时间: 2024-12-19 02:58:41

模方程的相关文章

【poj2947】高斯消元求解同模方程组【没有AC,存代码】

题意: p start enda1,a2......ap (1<=ai<=n)第一行表示从星期start 到星期end 一共生产了p 件装饰物(工作的天数为end-start+1+7*x,加7*x 是因为它可能生产很多周),第二行表示这p 件装饰物的种类(可能出现相同的种类,即ai=aj).规定每件装饰物至少生产3 天,最多生产9 天.问每种装饰物需要生产的天数.如果没有解,则输出"Inconsistent data.",如果有多解,则输出"Multiple so

UVA - 1426 Discrete Square Roots (模方程)

Description A square root of a number x is a number r such that r2 = x. A discrete square root of a non-negative integer x is a non-negative integer r such that r2 x mod N , 0r < N , where N is a specific positive integer and mod is the modulo operat

POJ2947Widget Factory(高斯消元解同模方程)

http://poj.org/problem?id=2947 题目大意:有n 种装饰物,m 个已知条件,每个已知条件的描述如下:p start enda1,a2......ap (1<=ai<=n)第一行表示从星期start 到星期end 一共生产了p 件装饰物(工作的天数为end-start+1+7*x,加7*x 是因为它可能生产很多周),第二行表示这p 件装饰物的种类(可能出现相同的种类,即ai=aj).规定每件装饰物至少生产3 天,最多生产9 天.问每种装饰物需要生产的天数.如果没有解,

ZOJ 3609 Modular Inverse 解线性模方程

点击打开链接 Modular Inverse Time Limit: 2 Seconds      Memory Limit: 65536 KB The modular modular multiplicative inverse of an integer a modulo m is an integer x such that a-1≡x (mod m). This is equivalent to ax≡1 (mod m). Input There are multiple test ca

POJ2065 SETI(高斯消元 同模方程)

(a1 * 1^0  +   a2 * 1^1  + ...  an * 1^n - 1) % P = f1 .... (a1 * n^0  +   a2 * n^1  + ...  an - 1 * n ^ n - 1) % P = fn 消元中A[k][i] % A[i][i]不为0时将A[k][i]变为他们的最小公倍数,即整行都乘上lcm(A[k][i], A[i][i]) / A[k][i],回代求解时使用逆元 #include<cstdio> #include<iostream

Poj 2947 widget factory (高斯消元解同模方程)

题目连接: http://poj.org/problem?id=2947 题目大意: 有n种类型的零件,m个工人,每个零件的加工时间是[3,9],每个工人在一个特定的时间段内可以生产k个零件(可以相同种类,也可以不同种类),问每种零件生产一个出来需要的时间? 解题思路: 给出的时间段是从周几到周几,并没有给出具体的时间段,因此在计算过程中要进行取模,还有就是对每个零件要在题目要求的范围内进行枚举. ps:如果求出来的增广矩阵是n*n的,但是某个零件在[3,9]之间没有合理的解,也是无解的. 1

HDU3571 N-dimensional Sphere(高斯消元 同模方程)

每个点到中心距离相等,以第0个点为参考,其他n个点到中心距等于点0到中心距,故可列n个方程 列出等式后二次未知数相消,得到线性方程组 将每个数加上1e17,求答案是再减去,求解时对一个2 * (1e17)以上的一个素数取模. 可用java 中高精度  System.out.println(BigInteger.valueOf(200000000000000001L).nextProbablePrime())  求一个大于2 * (1e17)的质数. #include<cstdio> #incl

2017CodeM复赛

A.配对游戏(loj6191) 题目: https://loj.ac/problem/6191 分析: g[i][j]表示前i个位置尽可能合并,合并到最后右边剩下j个>,这样情况的概率 那么g[i][j]=0.5*g[i-1][j-1]+0.5*g[i-1][j+1] 我们能不能根据概率来求期望呢? emmmmm...有点困难,因为我们只知道每种情况下右边剩余>的个数,却不知道左边剩余<的个数 其实这两个是对称的,所以结果*2就行了 如果没发现这个怎么办呢?那就老老实实设期望 f[i][

Bzoj3481 DZY Loves Math III

Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 310  Solved: 65 Description Input Output Sample Input 3 1 2 3 2 4 2 Sample Output 6 HINT 1<=N<=10,0<=Qi<=10^18,1<=Pi<=10^18,P>=2 本题仅四组数据. Source By Jc 数学问题 欧拉函数 Miller-Rabin Pollard-rho 花了