2231 분해합

Yohan Kim·2022년 6월 28일
0

문제

어떤 숫자와 그 숫자의 자리수의 합으로 만들어진 숫자를 분해합이라 할때,

245의 분해합 = 245 + 2 + 4 + 5 = 256

특정 숫자가 주어졌을때, 생성자를 구하는 문제이다.

코드

import sys

def calc(x):
    tmp = x
    count = 0
    while(tmp>0):
        count += tmp%10
        tmp //= 10
    return x+count

N = sys.stdin.readline()
n = int(N)
start = n - len(N)*9

exist = False
for i in range(start, n):
    if(calc(i) == n):
        print(i)
        exist = True
        break
if(not exist):
    print(0)

풀이

분해합을 계산하는 부분은 공식이나 법칙이 없으므로, 브루트 포스를 적용해야한다.

하지만 분해합이라는 특성상 반복문을 0부터 할 필요가 없다.
분해합으로 10000이라는 숫자를 만드는 수는 10000- 4*9 에서부터 시작하면 된다.

profile
안녕하세요 반가워요!

0개의 댓글