# -*- coding: utf-8 -*-
"""
 @Time    : 2020/8/19 10:07
 @Author  : QDY
 @FileName: 258. 各位相加.py
 @Software: PyCharm
"""
"""
    给定一个非负整数 num，反复将各个位上的数字相加，直到结果为一位数。

    示例:
    输入: 38
    输出: 2 
    解释: 各位相加的过程为：3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数，所以返回 2。
    进阶:
    你可以不使用循环或者递归，且在 O(1) 时间复杂度内解决这个问题吗？

"""


class Solution:
    def addDigits(self, num: int) -> int:
        if num == 0: return 0
        # num = Xn*10^n+...+X1*10+X0 = Xn*(99...9)+...+X1*9+(Xn+...+X1+X0)
        # n % 9 能得到最后的结果
        # 特殊情形：num % 9 == 0, 令num-1, % 9 后再+1
        return (num - 1) % 9 + 1
