diff --git a/leetcode/0728.Self-Dividing-Numbers/728.Self Dividing Numbers.go b/leetcode/0728.Self-Dividing-Numbers/728.Self Dividing Numbers.go new file mode 100644 index 000000000..a0f3c421f --- /dev/null +++ b/leetcode/0728.Self-Dividing-Numbers/728.Self Dividing Numbers.go @@ -0,0 +1,24 @@ +package leetcode + +func selfDividingNumbers(left int, right int) []int { + var ans []int + for num := left; num <= right; num++ { + if selfDividingNum(num) { + ans = append(ans, num) + } + } + return ans +} + +func selfDividingNum(num int) bool { + for d := num; d > 0; d = d / 10 { + reminder := d % 10 + if reminder == 0 { + return false + } + if num%reminder != 0 { + return false + } + } + return true +} diff --git a/leetcode/0728.Self-Dividing-Numbers/728.Self Dividing Numbers_test.go b/leetcode/0728.Self-Dividing-Numbers/728.Self Dividing Numbers_test.go new file mode 100644 index 000000000..a4e10d425 --- /dev/null +++ b/leetcode/0728.Self-Dividing-Numbers/728.Self Dividing Numbers_test.go @@ -0,0 +1,47 @@ +package leetcode + +import ( + "fmt" + "testing" +) + +type question728 struct { + para728 + ans728 +} + +// para 是参数 +type para728 struct { + left int + right int +} + +// ans 是答案 +type ans728 struct { + ans []int +} + +func Test_Problem728(t *testing.T) { + + qs := []question728{ + + { + para728{1, 22}, + ans728{[]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22}}, + }, + + { + para728{47, 85}, + ans728{[]int{48, 55, 66, 77}}, + }, + } + + fmt.Printf("------------------------Leetcode Problem 728------------------------\n") + + for _, q := range qs { + _, p := q.ans728, q.para728 + fmt.Printf("【input】:%v ", p) + fmt.Printf("【output】:%v \n", selfDividingNumbers(p.left, p.right)) + } + fmt.Printf("\n\n\n") +} diff --git a/leetcode/0728.Self-Dividing-Numbers/README.md b/leetcode/0728.Self-Dividing-Numbers/README.md new file mode 100644 index 000000000..60a4a283e --- /dev/null +++ b/leetcode/0728.Self-Dividing-Numbers/README.md @@ -0,0 +1,68 @@ +# [728. Self Dividing Numbers](https://leetcode-cn.com/problems/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. + +A self-dividing number is not allowed to contain the digit zero. + +Given two integers left and right, return a list of all the self-dividing numbers in the range [left, right]. + +**Example 1:** + + Input: left = 1, right = 22 + Output: [1,2,3,4,5,6,7,8,9,11,12,15,22] + +**Example 2:** + + Input: left = 47, right = 85 + Output: [48,55,66,77] + +**Constraints:** + +- 1 <= left <= right <= 10000 + +## 题目大意 + +自除数是指可以被它包含的每一位数整除的数。 + +- 例如,128 是一个 自除数 ,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。 + +自除数 不允许包含 0 。 + +给定两个整数 left 和 right ,返回一个列表,列表的元素是范围 [left, right] 内所有的 自除数 。 + +## 解题思路 + +- 模拟计算 + +# 代码 + +```go +package leetcode + +func selfDividingNumbers(left int, right int) []int { + var ans []int + for num := left; num <= right; num++ { + if selfDividingNum(num) { + ans = append(ans, num) + } + } + return ans +} + +func selfDividingNum(num int) bool { + for d := num; d > 0; d = d / 10 { + reminder := d % 10 + if reminder == 0 { + return false + } + if num%reminder != 0 { + return false + } + } + return true +} +```