代數
取一個存在亂數的字串,我們必須找到字串中已經存在的乘積和數字(一個較小,一個較大)。數字 x 和 x 1 也是個位數。讓我們看看這個例子
例如,給定一個字串包含 1203456。3 和 4 的乘積(一個較小,一個是
更大)產品變為 12 并且它存在于字串中。像 4 和 5(一個較小,一個是
更大)產品為 20 并且它存在于字串中,依此類推。
這樣,我們必須找到所有的數字,并在輸出中,我們必須顯示 pronic
單行上的數字。僅顯示不同的數字并確保它們按排序順序。
如果我們還沒有找到任何產品,則列印 -1。
示例輸入
1203456789
輸出
0 2 6 12 20 56
import itertools
list1=[]
s=str(input())
res = [s[i: j] for i in range(len(s)) for j in range(i 1, len(s) 1)]
def pro(s1):
set1=[]
set2=[]
for p in range(0,len(s1)-1):
a=int(s1[p])
b=int(s1[p 1])
mul=int(a*b)
mul=str(mul)
if mul in res:
set1.append(mul)
if (len(set1)==0):
print(-1)
else:
print(*set1)
pro(s)
我的輸出是正確的,在 5 個中,只有 2 個測驗用例失敗了!有人可以幫忙嗎!?
uj5u.com熱心網友回復:
您還沒有指出哪些測驗用例對您來說失敗了,但是您的方法看起來過于復雜——迭代所有可能適合輸入字串的 pronic 數字并不需要很長時間,所以只需進行迭代并列印所有匹配的數字:
>>> from math import ceil, sqrt
>>> def find_pronics(s):
... print(*(i*(i 1) for i in range(ceil(sqrt(int(s)))) if str(i*(i 1)) in s))
...
>>> find_pronics("1203456789")
0 2 6 12 20 56
uj5u.com熱心網友回復:
我將通過查找范圍 [0, n] 內的所有 pronic 數字來解決這個問題,其中 n 是我們作為輸入得到的數字,然后檢查它們是否存在于我們的數字中:
data = input() #1203456789
idata = int(data)
a,b = 0,1
res = []
while True:
tmp=a*b
a =1
b =1
if tmp > idata:
break
if str(tmp) in data:
res.append(tmp)
if not res:
res.append(-1)
print(*res) #0 2 6 12 20 56
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/422773.html
標籤:
上一篇:如果使用正確的標頭,服務器能否以小于請求范圍的內容長度回應
下一篇:將平面物件陣列轉換為嵌套物件
