POJ 1006 中國剩餘定理

2021-08-13 05:41:23 字數 1826 閱讀 5017

問題描述

人自出生起就有體力,情感和智力三個生理週期,分別為23,28和33天。乙個週期內有一天為峰值,在這一天,人在對應的方面(體力,情感或智力)表現最好。通常這三個週期的峰值不會是同一天。現在給出三個日期,分別對應於體力,情感,智力出現峰值的日期。然後再給出乙個起始日期,要求從這一天開始,算出最少再過多少天後三個峰值同時出現。

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.

/*已知(n+d)%23=p;   (n+d)%28=e;   (n+d)%33=i 

使33×28×a被23除餘1,用33×28×8=5544;

使23×33×b被28除餘1,用23×33×19=14421;

使23×28×c被33除餘1,用23×28×2=1288。

因此有(5544×p+14421×e+1288×i)% lcm(23,28,33) =n+d

又23、28、33互質,即lcm(23,28,33)= 21252;

所以有n=(5544×p+14421×e+1288×i-d)%21252

本題所求的是最小整數解,避免n為負,因此最後結果為n= [n+21252]% 21252

那麼最終求解n的表示式就是:

n=(5544

*p+14421

*e+1288

*i-d+21252)%21252;

*/#include

#include

using namespace std;

int main()

if(result == 0)

//即給出的三個峰值分別出現的時間即是同時出現的時間,且為開始時間。但是題目要求為下乙個滿足條件的天數,即為完整的乙個週期。

result = 21252;

printf("case %d: the next triple peak occurs in %d days.\n",a,result);

}return

0;}

POJ 1006 中國剩餘定理

初見poj1006用的暴力破解寫的 寫完以後發現很搓。上網一查原來古人早就對此類問題有了解答規則。一 中國剩餘定理 一元線性同餘方程組問題最早可見於中國南北朝時期 公元5世紀 的數學著作 孫子算經 捲下第二十六題,叫做 物不知數 問題,原文如下 有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二...

poj 1006(中國剩餘定理)

中國剩餘定理 孫子算經 中有 物不知數 問題 今有物不知其數,三三數之餘二 五五數之餘三 七七數之餘二,問物幾何?答為 23 這個就是傳說中的 中國剩餘定理 其實題目的意思就是,n 3 2,n 5 3,n 7 2 問n是多少?那麼他是怎麼解決的呢?看下面 題目中涉及 3,5,7三個互質的數 令 5 ...

poj 1006 中國剩餘定理

根據單因子構件湊成法 能對於變化的餘數都能快速求解 思想 求出23,28,33三個互素 前提 的分別餘數為一的情況,就介紹式一的情況,其他兩式同理可得。式一 x滿足被28和33整除,除以23餘1,這就意味著在28和33的公倍數下找被23除餘1的數,經過計算器嘗試,28 33 k 23 1 k 6 x...