[問題] ACM 11530 - SMS Typing(已解決)

看板Prob_Solve (計算數學 Problem Solving)作者 (古代牧羊犬)時間15年前 (2009/02/19 15:09), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
大家好 :) ACM 11530 讓我遇到了一點麻煩。 在確認過 UVa 的測試輸入沒有 big number 之後,我仍然不斷地得到 WA。 雖然試著在 UVa 討論區尋找資訊,可惜沒有發現我碰上的問題。 我的方法是用 simulation,但仍然一直找不到 WA 的原因, 因此想和大家討論看看。 :) 題目網址:http://0rz.tw/7cikl 程式碼:http://rafb.net/p/4PYLpY89.html 測試資料:http://rafb.net/p/agAEEv19.html,其中第三筆資料為五個空格 測試結果:http://rafb.net/p/RjYdoi76.html 【解決方法】 版友 fadingaway 很熱心地告訴我,問題在於「scanf("%d\n", &t);」這行。 scanf 裡最後加上的 '\n',會導致 scanf 將之後出現的空白字元也取掉。 很可惜的是,我們都不知道是什麼原因造成的。 想請問大家,是什麼原因造成這樣的現象呢?謝謝囉! :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.103.217 ※ 編輯: bafu 來自: 59.120.103.217 (02/19 16:05) ※ 編輯: bafu 來自: 59.120.103.217 (02/19 16:05) ※ 編輯: bafu 來自: 59.120.103.217 (02/19 16:06)

02/19 16:19, , 1F
scanf 的 format 只要有 whitespace 都會把之後的
02/19 16:19, 1F

02/19 16:20, , 2F
whitespace 吃掉, 這點看 scanf 的實作源始碼就知道
02/19 16:20, 2F

02/19 17:50, , 3F
我在 glibc 的 vfscanf.c 找到相關的資訊了,謝謝 ledia :D
02/19 17:50, 3F
文章代碼(AID): #19dGMOuY (Prob_Solve)
文章代碼(AID): #19dGMOuY (Prob_Solve)