LeetCode-258. 各位相加

题目描述 各位相加

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。

示例

输入: 38
输出: 2
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。

解题思路

三位数整数 n=100a+10b+c,变化后 addn=a+b+c,两者的差值n-addn=99a+9b 是9的倍数。

说明n和addn对于9,即n%9==addn%9。那么变化到最后,与n同余的个位数,也就是n%9

代码

class Solution {
public:
    int addDigits(int num) {
        if(num<10) return num;
        if(num%9==0) return 9;
        else return num%9;     
        return 0;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例 1: 输入: 38 输出:...
    zhipingChen阅读 1,560评论 0 2
  • 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 C++ 找规律。假如一个三位数'abc',...
    饼干不干阅读 3,480评论 0 51
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,807评论 0 2
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 12,962评论 0 13
  • 题目 难度:★★☆☆☆类型:数学 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 进阶:你...
    玖月晴阅读 4,918评论 0 0