LINTCODE——Digit Divide Numbers
题目:给定一个区间【lower, upper】,寻找区间内的数字能分别整除各个位数上的数字,满足条件的数:eg,128,128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0,如果某位数为0,则相当于不满足;
思路:还是比较简单的,提交的时候唯一要注意的就是INT_MAX = upper的情况,这个时候再循环里面加一个判断也就OK了;
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> ans;
for(int i = lower; i <= upper; i++) {
//直接遍历判断,为真就加入数组
if (isDigit(i))
ans.push_back(i);
//加一个这个判断,防止i到INT_MAX 溢出造成死循环;
if(i == INT_MAX)
break;
}
return ans;
}
bool isDigit(const int &num) {
int digit = num;
while(digit) {
int temp = digit%10;
if(temp == 0 || num % temp != 0)
return false;
digit /= 10;
}
return true;
}
};