Contents
Problem
Solution
非常非常麻煩的一題,在大數處理方面還好,但格式很麻煩。
先把字串轉為數字,這裡我用 deque
去存數字。
如果一開始是英文 則用 26 進位去算每一位數字 $x_1\times 26^0 + x_2\times 26^1 + …$ ,但進位時用 10 進位。一開始是數字則相反。(迭代法去計算次方比較快)
而在輸出方面如果一開始是英文,轉成數字後直接一位一位輸出即可。
一開始是數字則較為麻煩,因為轉成字母時,它沒有 0 ,而是 26 的 z。
這邊我把每一個存進去的數字 只要是等於零的代表它有進位 [26] -> [1][0] ,此時就要將它前一位減去 1 ,前一位也是零則借位直到可以減。
如此一來在輸出時 只要遇到 0 就輸出 'z'
,其餘則輸出各對應的。putchar(num[i] ? ('a' + num[i] - 1) : 'z')
。
或許有更直接的方法…
Code
1 |
|