競プロ典型 90 問:067 - Base 8 to 9(★2)
問題
挑戦結果
- 挑戦日:2021/10/28
- 結果:解けた
- 時間:20分
考えたこと
- 再現するだけ。
- いったん10進法に戻して計算する。
- コーナーケース(0のとき)で、WAを出した
- 実装はちょっと汚い気がした。
公式解説
https://twitter.com/e869120/status/1404931743820357633
解説を読んだふりかえり
- N=0のコーナーケースに注意と記載されていて凹んだ
ソース
N, K = input().split() K = int(K) # 操作。Sは文字列。 def sousa(S): if int(S) == 0: return "0" d = 1 # Sを9進法で解釈した数値がnum9。(num9は10進数) num9 = 0 for c in reversed(S): num9 += (d * int(c)) d *= 8 # num9(数値)を、文字列(9進法)に変える str9 = [] while num9 != 0: str9.append(str(num9%9)) num9 //= 9 str9.reverse() # 文字列にして、8を5に変える str9 = "".join(str9) return str9.replace("8","5") for _ in range(K): N = sousa(N) print(N)