#21649: 你各位答案差1的給我進來


610078 (電資意大利麵的最後希望)

學校 : 國立臺北科技大學
編號 : 119723
來源 : [114.36.35.205]
最後登入時間 :
2024-05-08 19:49:00
a263. 日期差幾天 -- 板橋高中練習題 | From: [49.216.101.240] | 發表日期 : 2020-07-01 16:13

計算兩個日期到0001年01月01日的距離然後再相加

問題出在年轉換為日的部分

int year = y*365 + y/4 - y/100 + y/400;

雖然依照閏年平年的標準這樣寫沒錯

但是你要知道這樣直接算的話,算到的實際上是隔年的同一天

以2020/07/01為例

2020*365-505+20-5,但這個天數會是「2020整年過完的天數」,繼續計算月和日下去會算成2021年的7/1

所以其實算年份要用(y-1)

int year = (y - 1) * 365 + (y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400;

月份和日一般就沒什麼問題

這邊是程式碼:

https://github.com/CalvinWan0101/ZeroJudge-Basic/tree/master/a263-%E6%97%A5%E6%9C%9F%E5%B7%AE%E5%B9%BE%E5%A4%A9

 
ZeroJudge Forum