白駿2231号:分解和(python)



コード#コード#

N = int(input())
if(N>100):
    t = N-100 #N보다 100 작은 숫자부터 시작
    brr = []
    for i in range(t,N):
        ii = i
        k = len(str(i))
        arr=[]
        a=0
        for j in range(k):
            a = i%10
            arr.append(a)
            i= i//10
        brr.append((sum(arr)+ii))
        if((sum(arr)+ii)==N):
            print(ii)
            break
    if(brr.count(N)==0):
        print(0)
else:
    brr = []
    for i in range(N):
        ii = i
        k = len(str(i))
        arr=[]
        a=0
        for j in range(k):
            a = i%10
            arr.append(a)
            i= i//10
        brr.append((sum(arr)+ii))
        if((sum(arr)+ii)==N):
            print(ii)
            break
    if(brr.count(N)==0):
        print(0)
コードは他の問題より長いです.解きやすい方法が見つからないので、長く書いてあります.ううう
まず,生成者の特性は与えられた数字と大きく異なるため,範囲は100程度に制限される.与えられた数100より小さい数から、各ビット数とその和を計算し、与えられた数と同じ場合には、出力でコードを記述する.次のelseが100以下の数字の場合.