백준

백준 2231번: 분해합

https://www.acmicpc.net/problem/2231

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
= int(input())
len=len(str(n))
if n<11:#11보다 작으면 생성자가 없음
    if n%2==0:
        print(n//2)
        exit(0)
    print("0")
    exit(0)
for i in range(9*len):
    base = n-9*len+i
    if base<0:#base가 0이하가 되면 생성자가 있어도 
생성자의 값이 올바르게 나오지 않기 때문에 0이상으로 바꿔줌
        base=abs(base)
    temp = base
    a = []
    for _ in range(len):
        a.append(temp%10)
        temp = temp//10
    if (base+sum(a)==n):
        print(base)
        exit(0)
print("0")
cs

 

💡 예전에 못풀었던 문제들 다시 풀어보는 중

'백준' 카테고리의 다른 글

백준 1920번: 수 찾기  (0) 2021.09.29
백준 10989번: 수 정렬하기 3  (0) 2021.09.29
백준 10816번: 숫자 카드 2  (0) 2021.07.19
백준 1476번: 날짜 계산  (0) 2021.07.13
백준 1475번: 방 번호  (0) 2021.07.09