原文:同餘模定理
定義
所謂的同餘,顧名思義,就是許多的數被乙個數 d 去除,有相同的餘數。d 數學上的稱謂為模。如 a = 6, b = 1, d = 5, 則我們說 a 和 b 是模 d 同餘的。因為他們都有相同的餘數 1 。
數學上的記法為:
a≡ b(mod d)
可以看出當 n < d 的時候,所有的 n 都對 d 同商,比如時鐘上的小時數,都小於 12,所以小時數都是模 12 的同餘.對於同餘有三種說法都是等價的,分別為:
(1) a 和 b 是模 d 同餘的.
(2) 存在某個整數 n ,使得 a = b + nd .
(3) d 整除 a - b .
可以通過換算得出上面三個說話都是正確而且是等價的.
定律
同餘公式也有許多我們常見的定律,比如相等律,結合律,交換律,傳遞律….如下面的表示:
a≡a(mod d)
a≡b(mod d)→b≡a(mod d)
(a≡b(mod d),b≡c(mod d))→a≡c(mod d)
如果a≡x(mod d),b≡m(mod d),則
4) a+b≡x+m (mod d)
5) a-b≡x-m(mod d)
6) ab≡xm(mod d )
應用
( a+
b)%c
=(a%
c+b%
c)%c
(a+b) \% c=(a\%c+b\%c)\%c
(a+b)%
c=(a
%c+b
%c)%c(a
∗b)%
c=(a
%c∗b
%c)%
c(a*b)\%c=(a\%c*b\%c)\%c
(a∗b)%
c=(a
%c∗b
%c)%
c;對於大數的求餘,聯想到進製轉換時的方法,得到
舉例如下,設大數 m=1234, 模 n
就等於(((
(1∗10
)%n+
2%n)
%n∗10
%n+3
%n)%
n∗10%
n+4%
n)%n
((((1 * 10) \% n + 2 \% n) \% n * 10 \% n + 3 \% n) \% n * 10 \% n + 4 \% n) \% n
((((1∗
10)%
n+2%
n)%n
∗10%
n+3%
n)%n
∗10%
n+4%
n)%n
大數求餘的簡單模板:
#include
//大數求餘,其中 n(除數)不是大數
char a[
1000];
intmain()
return0;
}
同餘模定理
定義 所謂的同餘,顧名思義,就是許多的數被乙個數d去除,有相同的餘數。d數學上的稱謂為模。如a 6,b 1,d 5,則我們說a和b是模d同餘的。因為他們都有相同的餘數1。數學上的記法為 a b mod d 可以看出當n 1 a和b是模d同餘的.2 存在某個整數n,使得a b nd 3 d整除a b....
ACM同餘模定理(模版)
今天將同餘模定理重新好好看了一下。同餘模定理 所謂的同餘,顧名思義,就是許多的數被乙個數d去除,有相同的餘數。d數學上的稱謂為模。如a 6,b 1,d 5,則我們說a和b是模d同餘的。因為他們都有相同的餘數1。有很多定理,但是我們只需要用到兩個,其餘的太過簡單就不再敘述。應用 a b c a c b...
同餘模定理的應用
一 公式 同餘模定理 a b mod a mod b mod mod a b mod a mod b mod mod 二 應用 求s description s n n 5 求s n 除以3的餘數 input 每行輸入乙個整數n,0 n 1000000 注意n的範圍,int long long in...