[백준] 4673번: 셀프 넘버
백준 4673번
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다.
양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다.
예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다.
이런식으로 다음과 같은 수열을 만들 수 있다.
33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ...
arr = [0] * 10100
for i in range(1, 10001):
num = i
total = i
if(arr[i] != 1):
while 1:
while(num > 0):
total += num % 10
num = num // 10
arr[total] = 1
if(total >= 10000): break
num = total
for i in range(1, 10000):
if(arr[i] != 1): print(i)
i 가 2일 때 4, 8, 16... 쭉 만들어서 arr을 1로 채우고, 10이라면 10 + 1 + 0 해서 11, 11 + 1 + 1 해서 13, 13 + 1 + 3 해서 17... 또 쭉 만들어서 arr을 1로 채운다. 그리고 마지막에 1이 아닌거로 출력 해 줬다.
Author And Source
이 문제에 관하여([백준] 4673번: 셀프 넘버), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@malza_0408/백준-4673번-셀프-넘버저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)