题目:
一个数字整除数是指一个可以被其中包含的每个数字整除的数.
举个例子, 128是一个数字整除数, 因为128 % 1 == 0, 128 % 2 == 0, and128 % 8 == 0.
并且, 数字整除数不允许包含数字 0.
给出数字取值的上下限, 输出一个包含所有数字整除数的列表, 包括边界。
注意事项:
$0<=L<=R<=2^{31}-1,R-L<=10^6$
样例:
给出$ left = 1$, $right = 22$, 返回$ [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]$$
思路:
分别判断区间中的每一个数是否满足条件。
参考答案:
class Solution {
public:
/**
* @param lower: Integer : lower bound
* @param upper: Integer : upper bound
* @return: a list of every possible Digit Divide Numbers
*/
vector<int> digitDivideNums(int lower, int upper) {
// write your code here
vector<int> res;
for(int i=lower; i<=upper;i++ ){
if(i == INT32_MAX) break;//防止溢出
if(isDigitDivideNumbers(i)){
res.push_back(i);
}
}
return res;
}
bool isDigitDivideNumbers(int n){
int digit = n;//保证n是全局的
while(digit){
int rem = digit%10;//余数
if(rem==0) return false;
if(n%rem!=0){
return false;
}
digit /=10;
}
return true;
}
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。