[LeetCode] 728. Self Dividing Numbers

728. Self Dividing Numbers (自分数)



1. 题目翻译

自分数的定义是一个数可以被他的每一位整除。例如,128是个自分数因为128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。当然,自分数不允许任何位存在0。给定两个数left和right,输出这两个数之间的所有自分数,包括这两个数。

例子:

输入: 
left = 1, right = 22
输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]

2. 解题方法

遍历从left到right的数,如果是自分数,就加入到一个vector中。判断自分数的方法就是将原数分别除以每一位看是否能整除。

3. 代码

//Runtime: 4ms
class Solution {
private:
    bool isDivided(int n){
        int n2 = n;
        while(n2){
            int temp = n2%10;
            if(temp==0)
                return false;
            else if(n%temp!=0)
                return false;
            n2/=10;
        }
        return true;
    }
public:
    vector<int> selfDividingNumbers(int left, int right) {
        vector<int> res;
        for(int i = left;i<=right;i++)
            if(isDivided(i))
                res.push_back(i);

        return res;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值