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; }
本文提供了一个C++源代码实例,详细解释了解决特定问题的方法:通过输入一系列日期信息(年、月、日),程序能够判断并计算出下一个三峰日期发生在多少天之后。该代码涉及结构体定义、条件判断、循环和复杂数学计算,旨在展示如何在C++中高效处理日期逻辑。
540

被折叠的 条评论
为什么被折叠?



