中國剩餘定理(孫子定理) POJ 1006

2021-06-29 03:03:28 字數 3498 閱讀 6950

中國剩餘定理可以描述為:

若某數x

分別被d1、、…

、dn除得的餘數為r1、

r2、…、

rn,則可表示為下式:

x=r1r1+r2r2+…+rnrn+rd

其中r1是d2

、d3、…

、dn的公倍數,而且被

d1除,餘數為

1;(稱為

r1相對於

d1的數論倒數)

r1 、

r2 、

…  、 rn

是d1、d2

、…、dn-1

的公倍數,而且被

dn除,餘數為1;

d是d1、

d2、…、的最小公倍數;

r是任意整數(代表倍數),可根據實際需要決定;且d1

、、…、必須互質,以保證每個

ri(i=1,2,…

,n)都能求得.

(注:因為r1對

d1求余為

1,所以

r1r1對d1

求余為r1

,這就是為什麼是r1對

d1求余為

1的目的,其次,

r2r2,r3r3…rnrn對d1

求餘都是0)

如要討論中國利餘定理,同餘(

congruence

)的概念可算是必須。

給定乙個正整數n,我們說兩個數a、b是對模n同餘,如果a-b是n的倍數。用符號a≡b(mod n)來代表。一般來說,a≡b(mod n)等同於a=b+kn,而a,b,k,n都是整數,所以,13≡1(mod 6)、19≡1(mod 6)。 

但同餘並不只是乙個代號,而是有很方便和有趣的特性。(一)整數加法跟普通加法相似,a+c≡(b+c)(mod n);(二)整數乘法跟普通乘法相似,ac≡bc(mod n),而a,b,c,n都是整數。但如果ac≡bc(mod n),則不一定a≡b(mod n)。 

以「鬼谷算」為例,假設x是那個未知數,而除3,5,7後的餘數分別為r1,r2,r3。因此有 

x≡r1(mod 3) 

x≡r2(mod 5) 

x≡r3(mod 7) 

而另一方面

70=(5x7)x2≡1(mod 3)、70≡0(mod 5)及70≡0(mod 7) 

21=(3x7)x1≡1(mod 5)、21≡0(mod 3)及21≡0(mod 7) 

15=(3x5)x1≡1(mod 7)、15≡0(mod 3)及15≡0(mod 5) 

由同餘的特性,我們有 

70r1

≡r1(mod3)、

70r1

≡0(mod5)及

70r1

≡0(mod

7) 21r2

≡0(mod3)、

21r2

≡r2(mod5)及

21r2

≡0(mod

7) 15r3

≡0(mod3)、

15r3

≡0(mod5)及

15r3

≡r3(mod

7) 因此亦有 

70r1+21r2+15r3≡r1(mod 3) 

70r1+21r2+15r3≡r2(mod 5) 

70r1+21r2+15r3≡r3(mod 7) 

所以x≡70r1+21r2+15r3+3m

x≡70r1+21r2+15r3+5n

x≡70r1+21r2+15r3+7p

最後得到這個精彩的結果,x≡(70r1+21r2+15r3)(mod 105),而105正便是3,5,7的最小公偣數。所以其實在很多數字可以滿足這幾個餘數條件的,要找到最小值才要減105。

上文**:

生理週期

time limit:1000ms

memory limit:10000k

total submissions:117635

accepted:36911

description

人生來就有三個生理週期,分別為體力、感情和智力週期,它們的週期長度為23天、28天和33天。每乙個週期中有一天是高峰。在高峰這天,人會在相應的方面表現出色。例如,智力週期的高峰,人會思維敏捷,精力容易高度集中。因為三個週期的周長不同,所以通常三個週期的高峰不會落在同一天。對於每個人,我們想知道何時三個高峰落在同一天。對於每個週期,我們會給出從當前年份的第一天開始,到出現高峰的天數(不一定是第一次高峰出現的時間)。你的任務是給定乙個從當年第一天開始數的天數,輸出從給定時間開始(不包括給定時間)下一次三個高峰落在同一天的時間(距給定時間的天數)。例如:給定時間為10,下次出現三個高峰同天的時間是12,則輸出2(注意這裡不是3)。

input

輸入四個整數:p, e, i和d。 p, e, i分別表示體力、情感和智力高峰出現的時間(時間從當年的第一天開始計算)。d 是給定的時間,可能小於p, e, 或 i。 所有給定時間是非負的並且小於365, 所求的時間小於21252。 

當p = e = i = d = -1時,輸入資料結束。

output

從給定時間起,下一次三個高峰同天的時間(距離給定時間的天數)。 

採用以下格式: 

case 1: the next triple peak occurs in 1234 days. 

注意:即使結果是1天,也使用複數形式「days」。

sample input

0 0 0 0

0 0 0 100

5 20 34 325

4 5 6 7

283 102 23 320

203 301 203 40

-1 -1 -1 -1

sample output

case 1: the next triple peak occurs in 21252 days.

case 2: the next triple peak occurs in 21152 days.

case 3: the next triple peak occurs in 19575 days.

case 4: the next triple peak occurs in 16994 days.

case 5: the next triple peak occurs in 8910 days.

case 6: the next triple peak occurs in 10789 days.

題意:其實意思就是求乙個數x除以23餘p,除以28餘e,除以33餘i,且x大於d,問x最小為?

思路:裸的中國剩餘定理問題。

#include #include #include int main()

/* for(i=2; i< 100000; i++)

if(((i - 1) % 33==0) && (i % 644==0)) break;

printf("%d\n", i);

*/ return 0;

}

中國剩餘定理(孫子定理)

設m1,m2 mk是k個兩兩互素的正整數 則同餘方程組 x a1 mod m1 x a2 mod m2 x ak mod mk 記m m1 m2 m3 mk 有bj使mm j bj 1 m odmj 則x i 1 kmmj aj bjps x不一定是最小的需要mod m 例題 求下列同餘方程組最小解...

中國剩餘定理(孫子定理)

中國剩餘定理,也叫孫子定理,是數論中的又乙個重要定理,那麼它是幹什麼用的呢?簡單來說,這是乙個用來求一元線性同餘方程組的定理。叫做孫子定理的原因就是該定理最早可見於南北朝時期的著作 孫子算經 捲下第二十六題,叫做 物不知數 問題,原文如下 有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二。問物...

中國剩餘定理 即 孫子定理

中國剩餘定理 即 孫子定理 中國古代求解一次同余式組 見 同餘 的方法。是 數論中乙個重要定理。又稱中國剩餘定理。中國剩餘定理 解法如下 假設存在乙個數m m a a m b b m c c 並且a,b,c必須倆倆互質。滿足這一條件下 存在乙個r1 使得 k1 a b r1 k1 c 1.存在乙個r...