同餘與模算術

2021-08-01 01:58:42 字數 931 閱讀 4175

(a+b)mod p = (a mod p + b mod p) mod p

(a*b)mod p = ((a mod p) * (b mod p)) mod p

(a-b)mod p = ((a mod p)-(b mod p) + p) mod p

a^b  mod  p= ((a  mod  p)^b) mod  p

結合率:((a+b)  mod  p + c) mod  p = (a + (b+c)  mod p)  mod  p

((a*b) mod  p * c) mod  p = (a * (b*c)  mod p)  mod  p   

交換率: (a + b)  mod  p= (b+a)  mod  p                

(a * b)  mod  p= (b * a)  mod  p                

分配率: ((a +b)mod  p * c)  mod  p= ((a * c)  mod  p + (b * c) mod  p)  mod  p

重要定理:

若a≡b ( mod  p),則對於任意的c,都有(a + c) ≡ (b +c) ( mod p);

若a≡b ( mod  p),則對於任意的c,都有(a * c) ≡ (b *c) ( mod p); 若a≡b ( mod  p),則對於任意的c,都有ac≡ bc ( mod p); 

若a-b=c,則a%c=b%c

大數取模:正整數n和m,n<=10100,m<=109.

#include #include using namespace std;

int main()

int main()

{ int a,n,m;

while(cin>>a>>n>>m)

cout<

同餘與模算術

模線性方程組 注意在減法中,由於a mod n可能小於b mod n,需要在結果加上n,而在乘法中,需要注 意a mod n和b mod n相乘是否會溢位。例如,當n 109時,ab mod n一定在int範圍內,但a mod n和b mod n的乘積可能會超過int。需要用long long儲存中...

同餘與模算術

1.大整數取模 把大整數寫成 自左向右 的形式 1234 1 10 2 10 3 10 4 然後逐步取模。eg n 10100,m 1018。但是要注意乘法溢位的問題。includeusing namespace std intmain return0 為了解決上面乘法溢位的問題,可以採用如下方法 ...

同模餘定理

宣告 借鑑高手!一 同餘 對於整數除以某個正整數的問題,如果只關心餘數的情況,就產生同餘的概念。定義1用給定的正整數m分別除整數a b,如果所得的餘數相等,則稱a b對模m同餘,記作a b mod m 如 56 0 mod 8 定理1整數a,b對模m同餘的充要條件是 a b能被m整除 即m a b ...