日期:2026年2月25日
ZeroJudge 題目連結:c089. 00389 - Basically Speaking
解題想法
由於 Python 的 int 內建了用指定進位制將字串轉換成 10 進位整數的功能,這部分可以使用預設工具;但是輸出格式之中沒有對應 7 進位制的工具,需要自己寫。而 C++ 則是兩個部分都要自己寫。
Python 程式碼
使用時間約為 7 ms,記憶體約為 2.9 MB,通過測試。
import sys
def ntos(n, base): # 輸入整數 n、基底 base,輸出轉換後的字串
# 數字 0 ~ 15 對應的字元
table = {0: '0', 1: '1', 2: '2', 3: '3',
4: '4', 5: '5', 6: '6', 7: '7',
8: '8', 9: '9', 10: 'A', 11: 'B',
12: 'C', 13: 'D', 14: 'E', 15: 'F'}
s = "" # 儲存結果用的字串
while n > 0: # 如果 n 大於 0 繼續執行
s = table[n%base] + s # 取 n%base 對應的字元加到 s 前面
n //= base # n 變為 1/base 倍
return s # 回傳 s
for line in sys.stdin:
arr = line.split() # 分割後會轉為串列存到 arr
# 先將字串用指定的基底 arr[1] 轉成 10 進位整數,再用 ntos 轉成 arr[2] 進位字串
s = ntos(int(arr[0], int(arr[1])), int(arr[2]))
m = len(s) # s 的長度
if m > 7: print(" ERROR") # 長度大於 7,印出 ERROR
else: print(" "*(7-m) + s) # 反之前面補空格到長度為 7 再輸出