I 함수 정의 가지고 증가
은 양의 정수original
부터을n
의해original
승산 유지를 포함하여 생성 된 모든 배수의 합을 계산 합계가total
보다 작아 질 때까지original
주어진 총계에 이상의 값에 도달하는 데 필요한 최소 승수를 반환하십시오.= 2
multiply_until_total_reached (1,5,2)
1 * 2 (1 + 2) < 5, 2 × 2 = 4, (1 + 2 + 4)> 그래서 예를 들면
5, 2 개는 승산
= 2multiply_until_total_reached (1,15,2)
1 * 2, 필요한 (1 + 2) < 15, 2 × 2 = 4, (1 + 2 + 4) < 15 * 2 = 8 (4), (1 + 2 + 4 + 8) = 15, 3 승산
내 현재 코드 작동하지만 리턴 값은 경우에 따라 1 씩 떨어져있다. 1,1038,2의 경우 10 대신 9 곱셈이 필요하지만 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
은 꺼져 무엇의 원인?
을 == 원래의 경우. 'if total = original : return 0'을 사용해야합니다. – Bakuriu
당신이 원한다면 이것에 대한 O (1) 또는 O (logn) 해결책이있을 것 같네요. –
@AbhishekJebaraj this는'O (log n)'솔루션입니다. 여기서 'n'은 값을 나타냅니다 전체의. – EvilTak