到天宫做客(2017寒假培训测试压轴题)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                到天宫做客(2017寒假培训测试压轴题)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                個人QQ:757394026
團隊QQ:466373640
個人博客:www.doubleq.win
c++/noi/信息學奧數(shù)博客:http://www.cnblogs.com/zwfymqz
題目描述
有一天,我做了個夢,夢見我很榮幸的接到了豬八戒的邀請,到天宮陪他吃酒。我猶豫了。天上一日,人間一年啊!當然,我是個閑人,一年之中也沒有多少時日是必須在人間的,因此,我希望選一個最長的空閑時間段,使我在天上待的時間盡量長。記住,今年是4000年。天上一天也是24小時,每小時60分,每分60秒。輸入
第一行是一個非負整數(shù) N,表示4000年中必須呆在人間的天數(shù),以下共N行,每行兩個用空格隔開的正整數(shù),即日期(月,日),輸入保證無錯誤,日期無重復。輸出
僅有一行包含一個非負整數(shù),即在天上的時間(四舍五入精確到秒)。樣例輸入
2 3 8 12 2樣例輸出
63266代碼:
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int a[10001]; int month[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}; int main() { int tot; int n; int x,y; scanf("%d",&n); for(int i=1;i<=n;i++) { tot=0; scanf("%d%d",&x,&y);//3 8 12 2 for(int j=1;j<x;j++) { tot=month[j]+tot; } tot=tot+y; a[tot]=1; } double le=0; double l=0; for(int i=1;i<=366;i++) { if(a[i]==1) { le=max(l,le); l=0; } else l++; if(i==366)le=max(l,le); } double ans; ans=double((le)/366)*3600*24; cout<<int(ans+0.5); return 0; }
思路:
這道題有難度,難就難在:
1.本題突破口特殊,需要從測試數(shù)據(jù)下手,推出一個算法
2要考慮到今年是閏年的情況
3得到算法后如何取最長月份
4最后的四舍五入
廢話不多說,自己看代碼,個人認為我寫的是全網(wǎng)最簡解法
個人博客doubleq.win
轉(zhuǎn)載于:https://www.cnblogs.com/zwfymqz/p/6379518.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的到天宫做客(2017寒假培训测试压轴题)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 小知识:杜绝明文密码,OGG的crede
- 下一篇: C#利用WebClient 两种方式下载
