語法書 / AA 競程語法書 下冊 / 第十六單元 / 本單元常犯錯誤總覽

本單元常犯錯誤總覽

# 錯誤描述 錯誤類型 ✗ 錯誤寫法 ✓ 正確寫法
1 進制字串轉整數,累積變數開 int 溢位 WA int val;(數值上看 10^{18} long long val;
2 整數轉進制字串,忘記特判 0 什麼都沒輸出 while (x > 0) 一次都不跑 開頭先判 x == 0,直接輸出 0
3 低位先取出來,忘記反轉就輸出 輸出左右顛倒 取完直接 cout << ans; reverse 之後再印,或倒著印
4 數值 10 以上仍用 '0' + d 轉字元 印出亂碼 '0' + 15'?' d >= 10 時用 'A' + (d - 10)
5 題目給小寫字母,仍用 c - 'A' + 10 數值錯得離譜 'a' - 'A' + 1042 c = toupper(c) 統一(8.5
6 大數輸出忘記去前導零 Wrong Answer 印出 0100007 while (C.size() > 1 && C.back() == 0) C.pop_back();
7 去前導零去過頭,0 印成空字串 Wrong Answer while (C.back() == 0) 無保底 條件加上 C.size() > 1
8 大數乘法累加陣列開 int 位數大時溢位 vector<int> C; 硬扛累加 vector<long long> C(n + m, 0);
9 stoi 餵超過 int 範圍的進制字串 RE stoi(s, nullptr, 2) 吃長字串 stoll;long long 也裝不下就走大數