' P '

whatever I will forget

n進数から10進数への変換

問題1

atcoder.jp

数学の解き方

数値の1桁目 * n進数^数値の桁数-1 + 数値の2桁目 * n進数^数値の桁数-2 + ... + 数値のx桁目 * n進数0 juken-mikata.net

mankozooyork.hatenablog.com

問題2

atcoder.jp

8進数から9進数に変更する問題
解き方としては8進数 → 10進数 → 9進数に変更していく流れ

下記の関数はすぐに取り出せるようにしておいてよいかも.
n_to_ten関数は、 - 整数をmodする
- 末桁の数値を取得
- x進数 ** 桁数の冪乗
を行うことによって、 n * base^桁数を実行している

ten_to_n関数は、 - 整数をmodする
- n進数に変更した際の末桁を取得
- 末桁を先頭に文字列として結合する
上記によって変換後の値を取得している

Sample

n, k = map(int, input().split())

def n_to_ten(target_num, base):
    result = 0
    digit = 0
    while target_num > 0:
        last_num = target_num % 10
        # n * base^m + n * base^m-1 + ... + n * base^0
        result += last_num * (base ** digit)
        target_num //= 10
        digit += 1
    return result

def ten_to_n(target_num, base):
    if target_num == 0:
        return "0"

    result = ""
    while target_num > 0:
        result = str(target_num % base) + result
        target_num //= base
    return result

for _ in range(k):
    n = n_to_ten(n, 8)
    n = ten_to_n(n, 9)
    n = int(n.replace("8", "5"))

print(n)