2265 - 到天宫做客
时间限制 : 1 秒
内存限制 : 128 MB
有一天,我做了个梦,梦见我很荣幸的接到了猪八戒的邀请,到天宫陪他吃酒。我犹豫了。天上一日,人间一年啊!当然,我是个闲人,一年之中也没有多少时日是必须在人间的,因此,我希望选一个最长的空闲时间段,使我在天上待的时间尽量长。记住,今年是4000年。天上一天也是24小时,每小时60分,每分60秒。
题目输入
输入文件的第一行是一个非负整数 N,表示4000年中必须呆在人间的天数,以下共N行,每行两个用空格隔开的正整数,即日期(月,日),输入文件保证无错误,日期无重复。
题目输出
输出文件仅有一行包含一个非负整数,即在天上的时间(四舍五入精确到秒)。
输入/输出样例
输入格式
2 3 8 12 2
输出格式
63266
C++解答
#include<iostream> #include<algorithm> using namespace std; int tim[400],day[400]={0}; int zhuanhuan(int x) { int y; float m; y=(int)(x*24*60*60/366.0); m=x*24*60*60/366.0; if ((m-y)>=0.5) return y+1; else return y; } int change(int m,int d) { while(m) if(m==1) return d; else if(m==2||m==4||m==6||m==8||m==9||m==11) {m--;d+=31;} else if(m==3) {m--;d+=29;} else {m--;d+=30;} } int main() { int n,m,d,ans; cin>>n; for (int i=1;i<=n;i++) { cin>>m>>d; day[i]=change(m,d); } day[n+1]=367; sort(day+1,day+n+2); for (int i=1;i<=n+1;i++) tim[i]=day[i]-day[i-1]-1; sort(tim+1,tim+n+2); ans=zhuanhuan(tim[n+1]); cout<<ans<<endl; //system("pause"); return 0; }