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:
Input:
left = 1, right = 22
Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
依題所示,如果一個數字可以整除它所有位上的數字,那麼就稱為self-dividing number,我們需要設計一個演算法來求出指定範圍內滿足的所有數字。
題目並不難,只需要不斷使用當前數字除以不同位上的數字即可,但是需要注意的是self-dividing number中不含有0的,像10這種的肯定不行了,因為number中一旦包含0就無法讓number本身除以0這一位了。
那麼問題就轉換成如果判斷數字中是否含0,對於像10、20、100、300 這種的可以直接讓其本身對10取模,觀察餘數是否為0即可,像101、203這種的,讓其除以10,然後再取模運算判斷。
那麼很快便能寫出如下解:
class Solution {
public:
vector<int> selfDividingNumbers(int left, int right) {
int temp = left;
vector<int> result;
for(int num=left;num<=right;num++) {// 在指定範圍內迴圈
temp = num;
if(!(temp%10)) { // 判斷是否屬於10、20、300型別
continue ;
}
while(temp && num%(temp%10) == 0) {// 如果當前位數滿足條件就繼續試探下一位
temp /= 10;
if(temp%10==0){ // 判斷是否屬於101、203這種的
break;
}
}
if(temp == 0) {
result.push_back(num);
}
}
return result;
}
};
這種是可以AC的,但是可以看到其中有不少冗餘的程式碼,那麼就需要優化一下減少冗餘的程式碼。可以看出其中temp%10的取模運算重複了,那就可以使用一個mod變數直接儲存。而100和101這種型別的可以統一放在一起判斷。
程式碼如下:
class Solution {
public:
vector<int> selfDividingNumbers(int left, int right) {
int temp = left;
int mod;
vector<int> result;
for(int num=left;num<=right;num++) {// 在指定範圍內迴圈
temp = num;
while(temp) {
mod = temp%10; // 求出此時的餘數
if(mod==0 || num%mod!=0)// 如果此時餘數等於0說明是10的倍數則退出,如果此時不滿足條件也退出
break;
temp /= 10;
}
if(temp == 0) {
result.push_back(num);
}
}
return result;
}
};
相關推薦
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 becaus
728. Self Dividing Numbers 自分數
each ati app 邊界 right output 輸出 href 允許 A self-dividing number is a number that is divisible by every digit it contains. For example, 1
LeetCode 728. Self Dividing Numbers
true aries ole turn git ref ever self inpu A self-dividing number is a number that is divisible by every digit it contains. For exampl
[LeetCode] 728. Self Dividing Numbers
return contains use == true left 不出 int ++ A self-dividing number is a number that is divisible by every digit it contains. For example,
leetcode 728:Self Dividing Numbers with Python
class Solution: def selfDividingNumbers(self, left, right): """ :type left: int :type right: int :rt
728. Self Dividing Numbers [for ...else]
A self-dividing number is a number that is divisible by every digit it contains. For example, 128 is a self-dividing number bec
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 nu
leetcode 728 Self Dividing Numbers(自除數) python3 多種解法(巧用取餘和地板除,實現整數的位運算)
class Solution: def selfDividingNumbers(self, left, right): """ :type left: int
#Leetcode# 728. Self Dividing Numbers
each bounds highlight right self ack ext numbers family https://leetcode.com/problems/self-dividing-numbers/ A self-dividing number i
[LeetCode] Self Dividing Numbers
i++ nta left vector because span || digi eve A self-dividing number is a number that is divisible by every digit it contains. For example
[LeetCode] Self Dividing Numbers 自整除數字
bounds 整除 leetcode dig ins dividing num per ssi A self-dividing number is a number that is divisible by every digit it contains. For
Leetcode728.Self Dividing Numbers自除數
自除數 是指可以被它包含的每一位數除盡的數。 例如,128 是一個自除數,因為 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。 還有,自除數不允許包含 0 。 給定上邊界和下邊界數字,輸出一個列表,列表的元素是邊界(含邊界)內所有的
Self Dividing Numbers 自除數
自除數 是指可以被它包含的每一位數除盡的數。 例如,128 是一個自除數,因為 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。 還有,自除數不允許包含 0 。 給定上邊界和下邊界數字,輸出一個列表,列表的元素是邊界(含邊界)內所有的自除數
Self Dividing Numbers 自除數
自除數 是指可以被它包含的每一位數除盡的數。 例如,128 是一個自除數,因為 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。 還有,自除數不允許包含 0 。 給定上邊界和下邊界數字,輸出一個列表,列表的元素是邊界(含邊界)內所有的自除
vue.js中的事件修飾符.self的用法。
.self可以理解為跳過冒泡事件和捕獲事件,只有直接作用在該元素上的事件才可以執行。 程式碼如下: <!DOCTYPE html> <html lang="en"> &l
315. Count of Smaller Numbers After Self
turn amp for tsm tail index you code merge p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue"; color: #323333 } p.p2 {
#452 Div2 Problem C Dividing the numbers ( 思維 || 構造 )
tin ros family 過程 clas num microsoft splay 選擇 題意 : 將從 1 ~ n 的數分成兩組,要求兩組和的差值盡可能小,並輸出其中一組的具體選數情況 分析 : 如果將這 n 個數從大到小四個一組來進行選擇的話那麽差值就為 0 ,然
Django專案執行時出現self.status.split(' ',1)[0], self.bytes_sent,ConnectionAbortedError: [WinError 10053] 你的主機中的軟體中止了一個已建立的連線。
1 [02/Nov/2018 09:46:51] "GET /new_industry/category HTTP/1.1" 200 2891792 2 Traceback (most recent call last): 3 File "C:\Program Files\Python36\l
CF .Beautiful numbers 區間有多少個數字是可以被它的每一位非零位整除。(數位DP)
題意:數字滿足的條件是該數字可以被它的每一位非零位整除。 分析:大概的思路我是可以想到的 , 但沒有想到原來可以這樣極限的化簡 , 在數位dp 的道路上還很長呀 ; 我們都知道數位dp 的套路 , 核心的部分就是找到判斷這個數的滿足條件的方法 , 如果找到了那這
CCF NOI1052. Self-Numbers
時間限制: 1000 ms 空間限制: 262144 KB 具體限制 題目描述 在1949年印度數學家D. R. Daprekar發現了一類稱作Self-Numbers的數。對於每一個正整數n,我們定義d(n)為n加上它每一位數字的和。例如,d(75)=75+7+