difficult:easy #728
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 :
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
解法一:
#include<vector>
std::vector<int> selfDividingNumbers(int left, int right) {
std::vector<int> result;
while (left <= right){
int x = left;
bool flag = true;
while (x != 0 && flag){
int pos = x % 10;
if (pos == 0){
flag = false;
break;
}
if (left % pos != 0) {
flag = false;
}
x = x / 10;
}
if (flag)
result.push_back(left);
left++;
}
return result;
}
解法二:
#include<vector>
#include<sstream>
#include <string>
std::vector<int> selfDividingNumbers(int left, int right) {
std::vector<int> result;
while (left <= right) {
std::string str;
std::stringstream buf;
buf << left;
buf >> str;
bool flag = true;
for(char c : str){
if (c == '0' || left % (c - '0') > 0){
flag = false;
break;
}
}
if (flag){
result.push_back(left);
}
left++;
}
return result;
}
版权声明:原创,转载请注明来源,否则律师函警告
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!