题目:
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:
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.
解释:
用一个函数判断是否是self-dividing。
python代码:
class Solution(object):
def isselfdividing(self,num):
n=num
r_list=[]
while n>0:
n,r=divmod(n,10)
r_list.append(r)
for r in r_list:
if r!=0 and num%r==0:
continue
else:
return False
return True
def selfDividingNumbers(self, left, right):
"""
:type left: int
:type right: int
:rtype: List[int]
"""
result=[]
for i in range(left,right+1):
if (self.isselfdividing(i)):
result.append(i)
return result
c++代码:
#include <vector>
using namespace std;
class Solution {
public:
bool isSelfDividing(int num)
{
int n=num;
int r=0;
vector<int> r_list;
while (n>0)
{
r=n%10;
n=n/10;
r_list.push_back(r);
}
for (auto r :r_list)
{
if(r!=0 && num%r==0)
continue;
else
return false;
}
return true;
}
vector<int> selfDividingNumbers(int left, int right) {
vector<int> result;
for(int i=left;i<=right;i++)
{
if (isSelfDividing(i))
result.push_back(i);
}
return result;
}
};
总结:
python的divmod函数很牛逼。