Source Code
Problem: 1006 | User: cug_fish2008 | |
Memory: 300K | Time: 32MS | |
Language: C++ | Result: Accepted |
- Source Code
#include <iostream> using namespace std; struct Node { int p; int e; int i; int d; Node *next; }; int main() { Node *start; Node *pass; pass=new Node; start=pass; while(cin>>pass->p>>pass->e>>pass->i>>pass->d) { if(pass->p==-1&&pass->e==-1&&pass->i==-1&&pass->d==-1) break; if(pass->p<0||pass->p>365||pass->e<0 ||pass->e>365||pass->i<0||pass->i>365) continue; pass->next=new Node; pass=pass->next; } int j=1; while(start->p!=-1||start->e!=-1||start->i!=-1||start->d!=-1) { int a1,a2,a3; int m1,m2,m3; int m_1,m_2,m_3; a1=start->p%23; a2=start->e%28; a3=start->i%33; m1=28*33; m2=23*33; m3=23*28; for(int k=1;k<23;k++) if((m1*k)%23==1){m_1=k;break;} for(int k=1;k<28;k++) if((m2*k)%28==1){m_2=k;break;} for(int k=1;k<33;k++) if((m3*k)%33==1){m_3=k;break;} int x,v; x=a1*m1*m_1+a2*m2*m_2+a3*m3*m_3; v=23*28*33; x=x%v; if(x<=start->d)x+=v; x=x-start->d; if(x<=21252){ cout<<"Case "<<j<<": "; cout<<"the next triple peak occurs in "; cout<<x<<" days."<<endl;} j++; start=start->next; } return 0; }