美文网首页
258. Add Digits

258. Add Digits

作者: namelessEcho | 来源:发表于2017-09-29 22:21 被阅读0次

    传统的loop方法

    class Solution {
        public int addDigits(int num) {
            while(num/10!=0)
            {
                int temp =0 ;
                while(num!=0)
                {
                    temp+=(num%10);
                    num=num/10;
                }
                num=temp;
            }
            return num ;
        }
    }
    

    我有点讨厌的trick方法: 对于B进制来说 N最后遗留下来的数符合以下规则:
    1.如果N=0,遗留下来的数就是0,
    2.对于N!=0且N%(B-1)==0的数,遗留下来的数是(B-1).
    3对于N!=0且N%(B-1)!=0的数,遗留下来的数是N mod(B-1);

    综上可以写成:remian(n) = 1 + (N - 1) % (B-1);

    对于十进制,有:

    class Solution {
    public:
        int addDigits(int num) {
            return 1 + (num - 1) % 9;
        }
    };
    

    相关文章

      网友评论

          本文标题:258. Add Digits

          本文链接:https://www.haomeiwen.com/subject/gmuwextx.html