檢查所有子數字在Python中是否具有不同的數字乘積
假設我們有一個數字n,我們必須檢查這個數字的所有子數字是否具有唯一的數字乘積。眾所周知,n位數有n*(n+1)/2個子數字。例如,135的子數字是1、3、5、13、35、135。數字的數字乘積是其各位數字的乘積。
因此,如果輸入類似於n = 235,則輸出將為True,因為子數字是[2, 3, 5, 23, 35, 235],數字乘積是[2, 3, 5, 6, 15, 30]
為了解決這個問題,我們將遵循以下步驟:
定義一個函式dig_prod()。這將獲取數字
- 乘積 := 1
- 對於digits中的每個d,執行
- 乘積 := 乘積 * d
- 返回乘積
- 從主方法執行以下操作
- num_str := num作為字串
- 長度 := num_str的大小
- digits := 一個大小為length的列表,最初所有值都為null
- prod_set := 一個新的空集合
- 對於範圍從0到length的i,執行
- digits[i] := num_str[i]作為整數
- 對於範圍從0到length - 1的i,執行
- 對於範圍從i到length - 1的j,執行
- item := dig_prod(digits[從索引i到j])
- 如果item在prod_set中,則
- 返回False
- 否則,
- 將item插入prod_set
- 對於範圍從i到length - 1的j,執行
- 返回True
讓我們看看下面的實現,以便更好地理解:
示例
def dig_prod(digits): product = 1 for d in digits: product *= d return product def solve(num): num_str = str(num) length = len(num_str) digits = [None] * length prod_set = set() for i in range(0, length): digits[i] = int(num_str[i]) for i in range(0, length): for j in range(i, length): item = dig_prod(digits[i:j+1]) if item in prod_set: return False else: prod_set.add(item) return True n = 235 print(solve(n))
輸入
235
輸出
True
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP