1. 程式人生 > >Biorhythms POJ - 1006 中國剩余定理

Biorhythms POJ - 1006 中國剩余定理

occurs 中國剩余定理 天數 rip void 第一天 就是 spa csdn

定理證明:https://blog.csdn.net/d_x_d/article/details/48466957

https://blog.csdn.net/lyy289065406/article/details/6648551

關鍵思路在於構造一個每部分膜另外一個不包含在部分內的部分的余數是1 然後把各部分分別乘以對應的余數

其中題目給出的第一天天數 就是 (n+d)%xn 的余數 不用處理

 1  
 2 #include<iostream>
 3 using namespace std;
 4  
 5 int main(void)
 6 {
 7     int p,e,i,d;
8 int time=1; 9 while(cin>>p>>e>>i>>d) 10 { 11 if(p==-1 && e==-1 && i==-1 && d==-1) 12 break; 13 14 int lcm=21252; // lcm(23,28,33) 15 //找到分別余1的x1*x2*k的k然後乘以余數 16 //x1*x2*k%x3 17 int n=(5544
*p+14421*e+1288*i-d+21252)%21252; 18 if(n==0) 19 n=21252; 20 cout<<"Case "<<time++<<": the next triple peak occurs in "<<n<<" days."<<endl; 21 } 22 return 0; 23 }

Biorhythms POJ - 1006 中國剩余定理