码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 258. Add Digits

时间:2020-04-18 12:07:52      阅读:48      评论:0      收藏:0      [点我收藏+]

标签:个数   code   题目   its   ref   ems   mod   ==   进制   

题目

同余定理,任何一个10进制数n 都可以表示成 n = a10^x + b10^(x-1) + .... c*10^0

那么 n ≡ ( a10^x + b10^(x-1) + .... c*10) mod 9

( a10^x + b10^(x-1) + .... c10) mod 9 = a10^x mod 9 + b * 10^(x-1) mod 9 +..c*10^0 mod9

又因为 a*10^x mod 9 = (a mod 9) * (10^x mod 9) = a mod 9

所以 n ≡ (a+b+..c) mod 9

题目求一个数字上每位上的数字相加得到一个新的数字,直到这个数字只有1位,
实际上就是 n ≡ (a+b+..c) ≡ n2 ≡ (a2+b2+..c2) ≡ ...nx ≡ (ax+bx+..cx) mod 9 其中 (nx = a(x-1)+b(x-1)+...c(x-1))

所以求n对9的余数就好了。当余数为0是,答案输出9

class Solution {
public:
    int addDigits(int num) {
        
        if(num==0)
            return 0;
        return num%9==0?9:num%9;
        
    }
};

LeetCode 258. Add Digits

标签:个数   code   题目   its   ref   ems   mod   ==   进制   

原文地址:https://www.cnblogs.com/dacc123/p/12724607.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!