【ABC171 C】「One Quadrillion and One Dalmatians」を解く【Python3】

「AtCoder」解説一覧へ

ロジャーが決めたルールに則って、番号Nの犬の名前を答える問題です。

提出
n = int(input())
ans = ""
while n>0:
    n -= 1
    ans += chr(ord("a")+n%26)
    n = n//26

print(ans[::-1])

「a~z」は「1~26」、「aa~zz」は「27~702」と命名されます。

「aa~zz」の個数は「262」、「aaa~zzz」の個数は「263」……、となることに注目し、右側の文字から考えていきます。

右端の文字は、番号nを26で割った余りだけ、「a」より大きいアルファベットです。

(番号1がaであるため、事前にnから1を引いておきます)

aのASCIIコードに余りを足して、文字に戻します。

最後に、26で切り捨て除算をnに代入することで、次の文字を求める準備をします。

ここでのnが0になるまでの間、この処理が続きます。

最後に文字列「ans」を逆に並べたものが答えになります。

【ABC171】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です