c096: 00700 - Date Bugs
標籤 :
通過比率 : 88% (91 人 / 104 人 ) (非即時)
評分方式:
Strictly

最近更新 : 2015-08-28 16:19

內容

據說在公元2000年的時候許多電腦會有麻煩。這是因為這些電腦只用兩個數字紀錄年份,所以年份會從1999突然變成1900。事實上,有許多類似的狀況 發生:某些系統使用32位元的整數儲存從某個特定日期到目前為止的秒數。以這樣的情形來看,232秒(大約136年)之後,日期將會跳回原本某個特定的 日期。

想像一下你有兩台電腦C1和C2,而且這兩台電腦有不同的問題:一台有Y2K-Bug(也就是說 b1:=2000 將會還原為 a1:=1900) 而另一台電腦在 b2:=2040的時候還原到 a2:=1904。假設電腦C1顯示的年份為 y1:=1941,C2顯示了 y2:=2005。那麼你可以推出以下結論(在沒有其他問題的狀況下):真實年份顯然不可能是1941,因為如果是1941年的話照理來說兩台電腦應該要 顯示一樣的年份。而若真實年份為2005,那麼C1應該要顯示1905,也不對。如果只觀察C1,我們知道真實年份應該是下列其中之一:1941, 2041, 2141...。這些年份如果在C2上顯示,應該會是:1941, 1905, 2005...。所以,事實上,實際的年份為2141。

手算實際年份是一個很麻煩的工作(相信你也不希望在你忘記真實年份的時候每次都要這樣算。)所以,你的工作就是寫一個程式,告訴你某些電腦顯示的年份以及 每台電腦各自的問題(例如把bi年顯示成ai年),找出第一個可能的實際年份。由於在電腦發明以後才有這樣的問題出現,所以你要找的實際年份應該在所有的 ai之後。

輸入說明

輸入檔案中包含了許多測試資料。每筆測試資料第一列包含了一個整數 n(1<=n<=20),代表電腦的數量。接下來每列都顯示了一台電腦的資料,依序是yi,ai,bi (0<=ai<=yi<bi<10000)。yi是電腦顯示的年份,bi是會出現問題的第一年,而這年所顯示的年份回到了ai。

輸出說明

對於每筆測試資料,輸出一列 "Case #k:",k代表第幾筆測試資料。接下來輸出一列``The actual year is z.'',z代表最小的可能實際年份(滿足所有電腦並且大於或等於 u = max{ai}。)如果不存在小於10000的可能年份,輸出``Unknown bugs detected.''。並且在每筆測試資料之後輸出一個空白列。請參考Sample Output。

範例輸入
2
1941 1900 2000
2005 1904 2040
2
1998 1900 2000
1999 1900 2000
0
範例輸出
Case #1:
The actual year is 2141.

Case #2:
Unknown bugs detected.
測資資訊:
記憶體限制: 512 MB
公開 測資點#0 (100%): 1.0s , <1K
提示 :

* 中文翻譯:Lucky 貓

標籤:
出處:
UVa700


編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」