Zerojudge 原創/不分類題庫b882 溢位 の OωO學長?
(一)正文
第一眼看見這道題目,可以好好讚嘆這作者編故事的能力,真的太厲害了,簡直在考閱讀能力嘛......(我討厭國文!!!)為了使這題好講一點,我把這題目重新述說一遍(不加廢話啦)
-----------------------------------------------------------------------------------------
輸入沒有進位概念的時分秒,請加上進位概念(24小時時制)
-----------------------------------------------------------------------------------------
例如輸入22 132 234,明顯地怎麼可能有234秒這的東西,所以我們就把234秒變成3分加54秒,把多的3分加入132分,變成135分。
沒有135分這東西啊,所以我們把它變成2時15分,並把2時加在22裡,變24時,但題目提示寫到:
提示 :
24小時制中並沒有 24:00:00 ,只有 00:00:00 唷~~~ OωO
所以沒有24時這東西,變成1天0時,當然時鐘不標記日期嘛,所以天就捨棄掉摟~
所以最後答案是 00:15:54
簡單嘛?噢,對,概念簡單,但這題不會輕易放過你的,一堆陷阱在裡面(我只知道兩個)~
先別急著往下看,趁著現在,現學現賣,趁熱打鐵,快~
(二)陷阱們
相信你,一定碰到了許多WA,以下我要講我碰到的陷阱,希望對你有所幫助:1.0 不等於 00,4 不等於 04
當答案有個位數時,就會出現錯誤,格式不對。怎辦?個位數時在前面加零啊~
2.我的答案出現奇怪的數字
為何會出現奇怪的數字?因為你的變數裝不下了啊int 可裝的整數範圍是2147483647 ~ -2147483648
所以用大一點的變數型態吧
(三)我要程式碼!!
好好好,程式碼程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <iostream> using namespace std; int main(){ long long int h,m,s; cin >> h >> m >> s; m = m + s/60; s = s%60; h = h + m/60; m = m%60; h = h%24; if (h < 10){ cout << "0"; } cout << h; cout << ":"; if (m < 10){ cout << "0"; } cout << m; cout << ":"; if (s < 10){ cout << "0"; } cout << s; } |
留言
張貼留言