我遇到了一個問題,我無法通過網路找到解決方案。也許我沒有輸入正確的詞來進行準確的搜索。然而,問題是這樣的:
找出加在一起達到給定整數需要多少個 9、3 和 1。當也乘以 1、3 和 9 時。
換句話說,假設 n = 25,那么我們將有 2(九)、2(三)和 1(一)。當我們將它們相乘時
2 * 9 = 18
2 * 3 = 6
1 * 1 = 1
總計 = 18 6 1 = 25 = n。
我找到了解決辦法;但是我想知道是否有相同的較小版本。
這是我的代碼。
def one_3_9(num):
temp = num
threes = []
ones = []
nines = []
val_ = 0
while temp != 0:
if 0 < num <=8:
if num >= 3:
val_ = num // 3
threes.append(val_)
temp = temp - (3 * val_)
ones.append(temp)
temp = temp - temp
elif num < 3:
ones.append(num)
temp = temp - temp
if 26 >= num >= 9:
val_ = num // 9
nines.append(val_)
temp = temp - (9 * val_)
ones.append(temp)
temp = temp - temp
if temp >= 3:
num = temp
val_ = num // 3
threes.append(val_)
temp = temp - (3 * val_)
ones.append(temp)
temp = temp - temp
else:
print("Number Should be more than 0 and less than 26.")
break
print("threes: ", threes)
print("Ones : ", ones)
print("nines: ", nines)
我完全同意答案是冗長的,也許我的解釋也是如此。但是,我真的希望我能理解這個例子。
謝謝你。
uj5u.com熱心網友回復:
您所描述的是計算以 3 為基數的數字的三位數字,假設它小于 27。
下面是一些更簡單的代碼:
def one_3_9(num):
nines = num // 9
threes = (num%9) // 3
ones = num % 3
print("Nines:", nines)
print("Threes:", threes)
print("Ones:", ones)
uj5u.com熱心網友回復:
按降序回圈遍歷值,使用模數除法來查找它可以進入該值的次數并從您的運行值中減去該結果:
def goes_into(n, vals):
result = {}
for i in sorted(vals, reverse=True):
into = n // i
result[i] = into
n -= i * into
if n % i:
raise ValueError("n is not attainable by vals")
return result
>>> goes_into(25, [1, 3, 9])
{9: 2, 3: 2, 1: 1}
uj5u.com熱心網友回復:
方法之一:
def calculate(num):
nines = num//9
threes = (num-(9*nines))//3
ones = num - (9*nines) - (3*threes)
print (f'{num} requires: 9s: {nines}, 3s: {threes}, 1s: {ones}')
calculate(49)
calculate(25)
calculate(37)
輸出:
49 requires: 9s: 5, 3s: 1, 1s: 1
25 requires: 9s: 2, 3s: 2, 1s: 1
37 requires: 9s: 4, 3s: 0, 1s: 1
uj5u.com熱心網友回復:
您好,我自己對答案進行了另一次嘗試,基本上它與我之前在問題中的答案非常相似。更多的是在代碼本身內完成的編輯。
def ones_threes_nines(num):
val = 0
nines = []
threes = []
ones = []
if num > 0 and num <= 26:
val = num // 9
nines.append(val)
num = num - (val*9)
val = num // 3
threes.append(val)
num = num - (val*3)
ones.append(num)
else:
print("Number should be more than 0 ")
print("Nines: ", nines, "Threes: ", threes, "Ones : ", ones)
這只是對我之前回答的改進嘗試,主要包括編輯和細微改進。我希望這與獲得較短版本答案的問題本身一致。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/316349.html
