[BOJ]231-分解と



問題の説明


ある自然数Nについて,その自然数と各数の和を加算した値を分解和と呼ぶ.
また,ある自然数Nの分解合Mに対して,分解合Mの自然数を生成者と呼ぶ.
このとき,ある分解に対して生成者の最小値を求める問題がある.

完全なコード

N = int(input())

result = 0
for i in range(N):
    n = i
    arr = []
    arr.append(n)
    while n > 1:
        arr.append(int(n%10))
        n /= 10
    if sum(arr) == N:
        result = i
        break

print(result)

コード解析

N = int(input())
  • 題の条件を満たす入力を受ける部分です.
  • result = 0
    for i in range(N):
        n = i
        arr = []
        arr.append(n)
        while n > 1:
            arr.append(int(n%10))
            n /= 10
  • iを0から入力Nに繰り返します.
  • iの値(自然数)と各ビット数をリストに入れます.
  • の場合、対応するコンストラクタ値がなければ、出力0を要求する条件があり、結果値は最初に0に初期化される.
  • if sum(arr) == N:
            result = i
            break
  • 該当する自然数と各数の和が入力したNに等しい場合、結果値をその自然数に設定し、該当する重複文を終了します.
  • print(result)
  • から導出結果値を出力し、プログラム
  • を完了する.

    に感銘を与える


    正直綺麗なコードかどうかはわかりませんが
    現在Pythonの文法にはまだ詳しくなく、c言語の論理はまだ頭の中に残っており、いくつかの影響を残しているようだ.