1.問題の説明:
Excelでは、列1から列26までの列名はAからZまでです。列27から、列名は2文字で構成されます。列27から列702までの列名はAAからZZまでです。次の列は、3文字と4文字で表されます。すみません、2021列の列名は何ですか?これは空欄に記入する質問です。結果を計算して送信するだけです。この質問の結果は整数です。回答を送信するときにこの整数を入力するだけで、余分なコンテンツを入力してもスコアは付けられません。
2.思考分析:
問題を分析すると、実際には基数変換の問題であることがわかります。これは、10進数から26への変換と見なすことができます。これは、10進数から他の基数への変換に似ています。方法は、現在の基数を除算することでもあります。余りを得るには、毎回26で割り、余りに対応する文字を順番に連結する必要があります。最初に、長さが26のリストが26文字に対応することを宣言できます。リストから現在の余り真ん中の現在の文字を取り出すだけです。2番目の方法は、計算量がそれほど多くないため、純粋な手計算です。直接計算も可能です。
3.コードは次のとおりです。
if __name__ == '__main__':
remainder = list()
# 生成列表中的内容
for i in range(26):
remainder.append(chr(65 + i))
# 输出测试结果看生成的结果是否正确
print(remainder)
n = 2021
res = ""
while n != 0:
# 对应索引的位置需要减去1
res = remainder[n % 26 - 1] + res
n //= 26
print(res)
if __name__ == '__main__':
print(2021 // (26 * 26))
print(2021 % (26 * 26))
# 第二位为Y
print(669 // 26)
print(669 % 26)
# 第一位为S
for i in range(19):
if i == 18: print(chr(i + 65))
# 所以最终三个数字为: "BYS"