2008年9月16日 星期二

[ACM] 解題注意事項

解了一題簡單的3n+1 problem來玩玩,發現要讓他Accept除了程式正確以外還有很多小地方要注意的。

1. 輸入輸出格式:
輸入通常是利用stdin當輸入,然後會把檔案導到stdin當作測試檔。輸出也是輸出在stdout

2. 對於有時間限制的程式,使用scanf, printf,會比cin, cout好。尤其是大量輸入輸出的程式。

3. long long的輸入輸出format不支援%lld,而是支援%l64d (沒有試過不確定)。

4. 錯誤訊息的順序:
1. Runtime Error, Time Limit Exceed, Memory Limit Exceed or Output Limit Exceed
2. Presentation Error, Wrong Answer


5. 注意輸入輸出的說明,因為測試檔不會公開所以要比較細心,不可只依賴範例檔。

像是在3n+1 problem裡面,範例檔的數字都是由小大到,例如:10 100 或是 100 200。但是最後發現一直無法Accept的原因是他的輸入有可能不照大小,而我由於沒有判斷,所以只會輸出0,就產生了Wrong Answer。

所以除了程式正確以外,小地方也要注意才能看到令人感動得Accept。


參考資料 :
http://acm.pku.edu.cn/JudgeOnline/faq.htm

沒有留言: