![見出し画像](https://assets.st-note.com/production/uploads/images/28944571/rectangle_large_type_2_33ce5ced453ed1aea162eb56c27acca6.jpg?width=1200)
AtCoder Beginner Contest 171を見直す(その2) 解けなかったC問題
C - One Quadrillion and One Dalmatians
問題
すごくざっくり言うと、数字が与えられるのでスプレットシートの列についてるアルファベットを答える問題。
例:
1 >> a
26 >> z
27 >> aa
702 >> zz
704 >> aab
ちなみに最大値は「1,000,000,000,000,001」(10^15+1)です。
解答
他の人の回答を参照して作ったのが以下。
N = int(input())
ans = ""
while N > 0:
N -= 1
ans += chr(97 + N%26)
N //= 26
print(ans[::-1])
結構シンプルですね。この回答だと余0の場合に「a」になるように、ループの頭でNから1引いているんですが、コンテストの時にはそこが思い付けずに、どハマりしてしまいました。
ちなみに解説動画で紹介されていた「カッコいい」解答は以下。
def f(N):
if N == 0: return ""
N -= 1
return f(N//26) + chr(97 + N%26)
N = int(input())
print(f(N))
解けたらええねん。とは思いつつもこういった「カッコいい」回答にも憧れますね。
この記事が気に入ったらサポートをしてみませんか?