문제
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 |