我必須定義一個函數,其中:遞增while循環沒有在一些測試用例工作
與正整數
original
開始,保持乘以original
通過n
並計算倍數的總和,包括生成original
,直到總和不再小於total
。返回 所需的最小乘法次數達到或高於給定總數的 。
因此,例如:
multiply_until_total_reached (1,5,2)
1 * 2 = 2,(1 + 2)< 5,2×2 = 4,(1 + 2 + 4)> 5,2次乘法需要
multiply_until_total_reached (1,15,2)
1 * 2 = 2,(1 + 2)< 15,2×2 = 4,(1 + 2 + 4) < 15,4×2 = 8,(1 + 2 + 4 + 8)= 15,3次乘法
我當前的代碼的工作,但返回的值是關閉的1在某些情況下。在1,1038,2的情況下,我需要9乘法而不是10,但在1,15,2的情況下,我得到了正確的乘積(3)。
這裏是我的代碼:
def multiply_until_total_reached(original, total, n):
if total < original:
return 0
elif total > original:
sumofdigits = 0 #declares var to keep track of sum of digits to compare to total
timesofmult = 0 #track how many multiplication operations
while sumofdigits <= total + 1:
multnum = original * n
sumofdigits = multnum + original
original = multnum
sumofdigits = sumofdigits + multnum
timesofmult = timesofmult + 1
return timesofmult
是什麼導致它成爲了嗎?
你缺少一個'總==原始案件。你應該有'如果總數<= original:return 0'。 – Bakuriu
我強烈地感到,如果你想要的話,可能還有一個O(1)或O(logn)的解決方案。 –
@AbhishekJebaraj這個*是'O(log n)'解決方案,其中'n'表示值'total'。 – EvilTak