Self-Dividing-Numbers

题目地址

LeetCode#728 Self Dividing Numbers

题目描述

  A self-dividing number is a number that is divisible by every digit it contains.

  For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.

  Also, a self-dividing number is not allowed to contain the digit zero.

  Given a lower and upper number bound, output a list of every possible self dividing number, including the bounds if possible.

Example 1:

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

Note:

  The boundaries of each input argument are 1 <= left <= right <= 10000.

解题思路

  Easy题,唯一需要考虑的就是如何判断一个数字是不是self-dividing number,题目上说的很清楚,能够整除他每一位上的数字的数字是self-dividing number,那就直接提出来计算就可以了,看代码吧。

解题代码【.CPP】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
bool isSelfDividingNumber(int number){
bool res = true;
int tol = number;
while (tol > 0 && res){
int tmp = tol % 10;
res = tmp && (number % tmp == 0);
tol = tol / 10;
}
return res;
}

public:
vector<int> selfDividingNumbers(int left, int right) {
vector<int> res;
for (int i = left; i <= right; ++i) {
if(isSelfDividingNumber(i)) res.push_back(i);
}
return res;
}
};
0%