【中國剩餘定理】終於弄懂剩餘定理了
阿新 • • 發佈:2019-02-02
【茅塞頓開……這麼簡單的東西我居然剛懂】//中國古代求解一次同餘式組(見同餘)的方法。是數論中一個重要定理。又稱中國剩餘定理。
//中國剩餘定理的結論: //令任意固定整數為M,當M/A餘a,M/B餘b,M/C餘c,M/D餘d,…,M/Z餘z時,這裡的A,B,C,D,…,Z為除數,除數為任意自然數([span]如果為0,沒有任何意義,如果為1,在孫子定理中沒有計算和探討的價值,所以,不包括0和1)時;餘數a,b,c,d,z為自然整數時。 //1、當命題正確時,在這些除數的最小公倍數內有解,有唯一的解,每一個最小公倍數內都有唯一的解;當命題錯誤時,在整個自然數範圍內都無解。 //2、當M在兩個或兩個以上的除數的最小公倍數內時,這兩個或兩個以上的除數和餘數可以定位M在最小公倍數內的具體位置,也就是M的大小。 //3、正確的命題,指沒有矛盾的命題:分別除以A,B,C,D,…,Z不同的餘數組合個數=A,B,C,D,…,Z的最小公倍數=不同的餘數組合的迴圈週期.
//一個數被3除餘1,被4除餘2,被5除餘4,這個數最小是幾?
//題中3、4、5三個數兩兩互質。
//則〔4,5〕=20;〔3,5〕=15;〔3,4〕=12;〔3,4,5〕=60。
//為了使20被3除餘1,用20×2=40;
//使15被4除餘1,用15×3=45;
//使12被5除餘1,用12×3=36。
//然後,40×1+45×2+36×4=274,
//因為,274>60,所以,274-60×4=34,就是所求的數。
//POJ 1006 Biorhythms
//Memory Time //256K 94MS #include<iostream> using namespace std; int main(void) { int p,e,i,d; int time=1; while(cin>>p>>e>>i>>d) { if(p==-1 && e==-1 && i==-1 && d==-1) break; int lcm=21252; // lcm(23,28,33) int n=(5544*p+14421*e+1288*i-d+21252)%21252; if(n==0) n=21252; cout<<"Case "<<time++<<": the next triple peak occurs in "<<n<<" days."<<endl; } return 0; }