作者LPH66 (杇瑣)
看板C_and_CPP
標題Re: [問題] ACM 10090
時間Sat Jun 2 19:31:35 2012
問題應該是出在你 23 24 行用了整數除法
也就是你的 ceil 和 floor 完全沒有作用
整數除法在正數除以正數時是固定取 floor
負數除以正數時則是固定取 ceiling
(先說這應該不是標準定的, 只是常見平台都是這樣)
也就是說你這兩行整數除法除出來的結果已經自動做了 floor 或 ceiling 中的某一個
於是再掛 ceil() 或 floor() 都是沒有用的
要達成你要的方式請轉型成 double 再做除法
也就是改成這樣:
t1 = (long long)ceil((double)(-n)*x/n2);
t2 = (long long)floor((double)(n)*y/n1);
--
◢ ˊ_▂▃▄▂_ˋ. ◣ ▅▅ ▅▅ ι●╮ █
▄▄▄▄▄
▍
./◤_▂▃▄▂_◥ \'▊ HARUHI █████ <■┘ ▄▄▄▄▄▄▄
▎
⊿ ◤◤◥█◥◥█Δ ISM By-gamejye ¢|\ ▌▌▌▌▌▄▌▌
▏
ζ(▏●‵◥′●▊)Ψ ▏ █
⊿Δ ▄▄▄ ▄▄▄▄
█/|▊ 〃 、 〃▋ |\ ▎ ハルヒ主義 █
▄▄▄█▄▄
◥◥|◣ ‵′ ◢/'◢◢
S.O.S 世界を大いに盛り上げるための涼宮ハルヒの団
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.28.91
※ 編輯: LPH66 來自: 140.112.28.91 (06/02 19:32)
推 cobrasgo:我從來沒注意過這個問題@@ 06/02 21:22
推 Biboy:真的是這樣!! 太感謝了!! 以前都沒注意過這個.... 06/02 22:05
→ Biboy:改成double後答案就對了! 又多學一項了! 謝謝你!! 06/02 22:05