본문 바로가기

프로그래밍/백준

6378. 디지털 루트


문제

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

 

6378번: 디지털 루트

양의 정수 N의 디지털 루트를 구하려면 N을 이루고 있는 모든 자리수를 더해야 한다. 이때, 더한 값이 한 자리 숫자라면, 그 수가 N의 디지털 루트가 된다. 두 자리 이상 숫자인 경우에는 다시 그

www.acmicpc.net


분석

입력 요구 사항:

1. N - 0<=N<=10^1000-1(약 1E+1000)

 

출력 요구 사항:

1. 디지털 루트 - N으로 0 입력시 종료


풀이

자리 수가 1자리가 될 때까지 새로운 수는 기존 수의 각 자리의 합이 된다.

단 최대 1000자리이기 때문에 C/C++은 조금 까다로울 것이다.

그래서 파이썬으로 풀었다.


잡담

큰 수, 매우 높은 정밀도는 FFT(무서워서 찍먹도 안 해봄) 아니면 파이썬 쓰자

def get_digital_root(num: str) -> int:
    total = sum(int(digit) for digit in num)

    while total >= 10:
        total = sum(int(digit) for digit in str(total))
    
    return total

while True:
    num = input()
    if num == "0":
        break
    print(get_digital_root(num))

'프로그래밍 > 백준' 카테고리의 다른 글

14889. 스타트와 링크  (0) 2023.12.20
28324. 스케이트 연습  (0) 2023.12.16
30676. 이 별은 무슨 색일까  (0) 2023.11.28
17286. 유미  (0) 2023.11.27
25184. 동가수열 구하기  (0) 2023.11.26