本單元重點回顧
K 進制=位值系統:每一格放 0 \sim K-1,右起第 i 位的位值是 K^i;整個數=每位數字 × 位值加總。n 個二進制位最多數到 2^n - 1。
二進制 ↔ 十六進制:2^4 = 16,二進制每 4 位一組恰對應 1 個十六進制位(
A~F是 10 \sim 15);1 位元組=2 個十六進制位。程式裡可用0b、0x字面常數直接寫。進制字串 → 整數:累積式
val = val * K + digit(高位起,推薦)或位值累加(低位起);字元轉數值靠 8.2 的c - '0'與c - 'A' + 10。累積變數用 long long。整數 → 進制字串:反覆
x % K取個位、x / K去個位;取出順序是反的,reverse或倒著印;x = 0 一定要特判。stoi/stoll第三參數:2 \sim 36 進制字串一行轉整數,大小寫皆可;反方向沒有同樣順手的現成函式,16.4 的手寫版就是競程的標準做法。2^{10} \approx 10^3:2^{20} \approx 10^6、2^{30} \approx 10^9;int 上限=2^{31} - 1 = 2147483647、long long 上限=2^{63} - 1 \approx 9.2 \times 10^{18}——看到範圍先估型態。
大數=一格一位的陣列:long long 裝不下就用字串讀入、轉成「個位住索引 0」的反向
vector<int>,模擬直式運算;反向存是為了個位對齊與進位好擴充。大數加法:逐位相加 → 統一進位(
C[i+1] += C[i] / 10; C[i] %= 10;)→ 去前導零(至少留一位)→ 倒著印。大數乘法:
A[i] * B[j]歸戶到C[i + j](位值 10^{i+j}),先全部累加、最後統一進位;累加陣列用 long long;運算量 O(nm)——兩層迴圈。