白駿解題-転換陣法2745回


📜 理解问题


B進数Nが与えられる.この数を10進数に変更して、出力のプログラムを書いてください.
10進数を超える進数には、数字では表せない桁数があります.この場合、大文字を使用します.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

💡 問題の再定義


2進数Nを10進数に出力する

▼▼▼計画作成


各ビット数にBのビット数インデックスの乗数を乗せればよい.
例)
バイナリ:011->1 x 2^0+1 x 2^1+0 x 2^2
5進法:324->4個x 5^0+2個x 5^1+3個x 5^2

💻 計画の実行

if __name__ == '__main__':
    N, B = input().split()
    result = 0
    B = int(B)
    L = len(N)
    for i, n in enumerate(N):
        result += B ** (L - i - 1) * (ord(n) - 55) if n.isalpha() else B ** (L - i - 1) * int(n)

    print(result)

🤔 振り返る


試験が終わった後、また1日100回から、最初は簡単な問題を選びました.
陣法の概念を正しく理解すれば、問題を解決することができる.