看板 java 關於我們 聯絡資訊
這是我在 ACM #10140 遇到的問題: http://uva.onlinejudge.org/external/101/10140.html 下面是我的程式碼(AC version): http://gist.github.com/404654 --- 下面我會把我有問題的部份抽出來, 所以即使不看題目和 code 也沒有關係。 Scanner in = new Scanner(System.in); int u = in.nextInt(); for(int i=l;(long)i<=u&&i>=0;i++){ // 拿掉 long 就會 WA // ... } 這份 code 目前已經 AC 了, 但我很仔細的試了很多次, 只要把 (long) 這轉型拿掉,上傳後就會得到 WA。 可是在我的認知裡頭, i 和 u 從 int 強制轉型成 long 並不會改變它們的值, 也就是說 i<=u 和 (long)i <= (long)u 應該會有完全相同的結果才對。 所以我想,如果不是我真的遇到什麼詭異的 bug,就是我有很嚴重的誤解了。 --- 這裡額外對題目做一點補充,雖然我認為這也不會影響到結果才是。 u 的範圍會在 2 ~ 2^31 -1 之間(正整數、且在 int 範圍之內) i 的起始值位於 1~u 之間。 如果 u = 2^31-1,那麼 i 在迴圈的最後一次也會是 2^31 -1, 而下一次就會變成 -2^31,並且離開迴圈。 以上是題目給的範圍,我也自己寫程式去驗證過了,確實沒有發現違反的情況。 請大家給點意見 Q_Q 謝謝 :p -- T$,修好它吧。 ⊙─ ─⊙▂⊙ 碰到問題,用SoftICE就對了! █◤ Lee T$ Chen MYTHBUGTERS by dajidali -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.183.199 ※ 編輯: tkcn 來自: 140.122.183.199 (05/18 13:40)
PsMonkey:光看也是覺得很莫名,只能推薦你用 SoftICE 了 XD 05/18 13:50
ogamenewbie:變成負的會離開嗎? (思 05/18 13:51
tkcn:會的,第二個條件是 i>=0,我自己也做了一些input測試沒問題 05/18 13:53