藍橋杯算日期VB通解
阿新 • • 發佈:2018-12-07
隨便開啟一個目錄, 右鍵-新建文字檔案
重新命名 xxx.vbs (需要顯示字尾名)
vbs是VB Script縮寫...
因為VB中有2個很簡單的時間函式datediff(時間間隔)和dateadd(時間相加)
所以日期的填空題能1分鐘內做完
=========================我叫分割線=========================
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
DateAdd(interval, number, date)
interval 引數
yyyy 年
q 季度
m 月
y 一年的日數
d 日
w 一週的日數
ww 周
h 小時
n 分鐘
s 秒
=========================我叫分割線=========================
2015年4月11日省賽C/C++的B組第2題
星系炸彈
在X星系的廣袤空間中漂浮著許多X星人造“炸彈”,用來作為宇宙中的路標。
每個炸彈都可以設定多少天之後爆炸。
比如:阿爾法炸彈2015年1月1日放置,定時為15天,則它在2015年1月16日爆炸。
有一個貝塔炸彈,2014年11月9日放置,定時為1000天,請你計算它爆炸的準確日期。
請填寫該日期,格式為 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19
請嚴格按照格式書寫。不能出現其它文字或符號。
=========================我叫分割線=========================
msgbox dateadd("d",1000,"2014-11-9")
'vb中註釋是單引號...msgbox意思是MessageBox 就是彈出對話方塊
'vb中不需要分號結尾, 函式呼叫 直接可以用 [func 引數]
'更規範 稍微符合C語言的...Call Msgbox("xxxxx")
=========================我叫分割線=========================
就這麼一行, 然後儲存, 執行這個vbs
=========================我叫分割線=========================
答案出來了...這個小技巧分享給大家啦. 不用自己看日曆數(汗||)或者寫程式碼了~
因為3次碰到日期相關的了...所以這個方法還是感覺挺實用的~
能爭取到大概20分鐘的時間(新技能get√)
例二:
重新命名 xxx.vbs (需要顯示字尾名)
vbs是VB Script縮寫...
因為VB中有2個很簡單的時間函式datediff(時間間隔)和dateadd(時間相加)
所以日期的填空題能1分鐘內做完
=========================我叫分割線=========================
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
DateAdd(interval, number, date)
interval 引數
yyyy 年
q 季度
m 月
y 一年的日數
d 日
w 一週的日數
ww 周
h 小時
n 分鐘
s 秒
=========================我叫分割線=========================
2015年4月11日省賽C/C++的B組第2題
星系炸彈
在X星系的廣袤空間中漂浮著許多X星人造“炸彈”,用來作為宇宙中的路標。
每個炸彈都可以設定多少天之後爆炸。
比如:阿爾法炸彈2015年1月1日放置,定時為15天,則它在2015年1月16日爆炸。
有一個貝塔炸彈,2014年11月9日放置,定時為1000天,請你計算它爆炸的準確日期。
請填寫該日期,格式為 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19
請嚴格按照格式書寫。不能出現其它文字或符號。
=========================我叫分割線=========================
msgbox dateadd("d",1000,"2014-11-9")
'vb中註釋是單引號...msgbox意思是MessageBox 就是彈出對話方塊
'vb中不需要分號結尾, 函式呼叫 直接可以用 [func 引數]
'更規範 稍微符合C語言的...Call Msgbox("xxxxx")
=========================我叫分割線=========================
就這麼一行, 然後儲存, 執行這個vbs
=========================我叫分割線=========================
答案出來了...這個小技巧分享給大家啦. 不用自己看日曆數(汗||)或者寫程式碼了~
因為3次碰到日期相關的了...所以這個方法還是感覺挺實用的~
能爭取到大概20分鐘的時間(新技能get√)
例二:
題目描述:
大數學家高斯有個好習慣:無論如何都要記日記。
他的日記有個與眾不同的地方,他從不註明年月日,而是用一個整數代替,比如:4210
後來人們知道,那個整數就是日期,它表示那一天是高斯出生後的第幾天。這或許也是個好習慣,它時時刻刻提醒著主人:日子又過去一天,還有多少時光可以用於浪費呢?
高斯出生於:1777年4月30日。
在高斯發現的一個重要定理的日記上標註著:5343,因此可算出那天是:1791年12月15日。
高斯獲得博士學位的那天日記上標著:8113
請你算出高斯獲得博士學位的年月日。
提交格式:
yyyy-mm-dd, 例如:1980-03-21
演算法思路:
首先,我們計算出高斯出生的那一天到年末的時間t1,我們用總的天數t減去t1,這樣就可以避免t1對我們以後的計算照成的麻煩;
然後,我們對接下來的每年相加,直到得到第一個天數大於t的年份,則該年份就是我們要求出的年份,按照同樣的方法求出月份;
天數就是t減去以上的時間剩下的結果,還要注意輸出結果中當天數和月份為個位數的時候,不是直接輸出,而是前面帶有0,因此應對輸出進行控制。
注意:一個坑的問題就是自己沒有想到出生的那一天已經是第一天了
'這題因為是第多少天 所以需要-1
'vb中分割字串用& vbCrLf相當於C/C++中的\n或者endl
msgbox "5343:" & dateadd("d",5343-1,"1777-4-30") & vbCrLf & "8113:" & dateadd("d",8113-1,"1777-4-30")