応用情報技術者 2016年 春期 午前2 問02
問題文
10進数 123 を、英字 A〜Z を用いた 26進数で表したものはどれか。ここで、A = 0,B= 1, ...、Z = 25 とする。
選択肢
ア:BCD
イ:DCB
ウ:ET(正解)
エ:TE
🔒 解説は解答すると表示されます
英字による26進数【午前2解説】
正解の理由
10進数を26進法で表す際、桁ごとの係数に対応する文字が A=0、B=1, …, Z=25 の対応で与えられています。123を26進数に変換すると上位桁が4、下位桁が19となり、対応する文字はそれぞれ E(4)、T(19)です。したがって、表記は ウ の「ET」となります。計算で示すと となり一致します。
解法ステップ
- 与えられた10進数 を基数26で割り、商と余りを求める(下位桁が余り)。
- 余り 。余り が下位桁、商 が上位桁(商が26未満なのでこれ以上の桁はない)。
- 各桁の数値を文字に変換(A=0 → 0→A, 1→B, …, 4→E, 19→T)。
- 上位→下位の順に結合すると「ET」。
具体的には
- 下位桁:
- 上位桁: 結果: ET(上位から表記)で、。よって正解は ウ。
選択肢別の誤答解説
-
ア: BCD
B=1、C=2、D=3 とすると桁は (1,2,3) で値は
。123と合わない。 -
イ: DCB
D=3、C=2、B=1 とすると桁は (3,2,1) で値は
。123より大きい。 -
ウ: ET
E=4、T=19 とすると桁は (4,19) で値は
。与えられた10進数と一致するため正解。 -
エ: TE
T=19、E=4 とすると桁は (19,4) で値は
。123と一致しない。
(各計算では を用いています)
よくある誤解
- Aを「1」と扱う誤り:Excelの列名はA=1の「有理化26進法(bijective base-26)」に近く、本問題のルール(A=0)とは異なります。A=1で計算すると常に1ずれるため誤答につながります。
- 文字の並び順の誤認:与えられた文字列が「上位→下位」の順に並んでいる点を忘れ、逆に評価してしまうミス(例: TEとETの混同)。
- べき乗・乗算の計算ミス: や各項の乗算を誤ると最終値が大きく狂います(計算過程は丁寧に確認すること)。
補足コラム
この種の問題は「基数変換」と「文字と数値の対応」を確実に扱えるかがポイントです。一般化すると、10進数 を基数(ここでは26)で表すには繰り返し除算を行い余りを下位桁として取っていきます。文字対応がA=0のように0を含む場合は通常の基数記法と同じ扱いで、A=1のような規則(Excel式)は別解釈となります。
簡単なPython例(A=0のルール):
def to_base26_letters(n):
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
if n == 0:
return "A"
digits = []
while n:
n, r = divmod(n, 26)
digits.append(letters[r])
return ''.join(reversed(digits))
print(to_base26_letters(123)) # ET
FAQ
Q. もし問題で A=1 と書かれていたら?
A. A=1 の場合は「有理化(bijective)26進法」に相当し、変換アルゴリズムが異なります。典型的には割り算の前に1を引くなどの処理が必要です(本問とはルールが違うため注意)。
A. A=1 の場合は「有理化(bijective)26進法」に相当し、変換アルゴリズムが異なります。典型的には割り算の前に1を引くなどの処理が必要です(本問とはルールが違うため注意)。
Q. 0はどの文字になる?
A. 本問のルールでは A=0 なので、数値0は文字列 "A" に対応します(ただし多桁表記で上位にAが来るのは先頭の意味合いと扱いに注意)。
A. 本問のルールでは A=0 なので、数値0は文字列 "A" に対応します(ただし多桁表記で上位にAが来るのは先頭の意味合いと扱いに注意)。
Q. 大きな数でも同様に変換できるか?
A. はい。商が0になるまで同じ手順(割って余りを取る)を繰り返せば良いです。
A. はい。商が0になるまで同じ手順(割って余りを取る)を繰り返せば良いです。
関連キーワード: 26進法、基数変換、文字コード対応、Excel列名、余り計算

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

