어떤 숫자와 그 숫자의 자리수의 합으로 만들어진 숫자를 분해합이라 할때,
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 에서부터 시작하면 된다.