을 게시했습니다. 다른 스레드를 게시했지만 응답을받지 못했습니다. 따라서 더 명확하게 작업하기 위해 노력하고 있습니다.이진 검색을 사용하여
정확하게 1 년 동안 빚을 갚기 위해 월 단위 지불을 결정하기 위해 이분법을 사용해야합니다. 나는 매우 해제 방법 답을받을 그러나
originalBalance = 320000
annualInterestRate = 0.2
monthly_interest = annualInterestRate/12
low = originalBalance/12
high = (originalBalance*(1 + monthly_interest)**12)/12
epsilon = 0.01
min_payment = (high + low)/2.0
while min_payment*12 - originalBalance >= epsilon:
for month in range(0, 12):
balance = (originalBalance - min_payment) * (1+monthly_interest)
if balance < 0:
low = min_payment
elif balance > 0:
high = min_payment
min_payment = (high + low)/2.0
print "lowest payment: " + str(balance)
: 여기
는 일부 코드의 내 친구가 정답이라고 나에게 말했다298222.173851 :보다 훨씬 낮은 29157.09
내 ... 문제는 반올림 (내가 아직하지 않았 음)이고 균형이 0 이상이면 모든 반복 후 균형을 유지하는 것 같습니다.이 문제를 시도하고 제발, 도와 줄 사람을 알아낼 수 없습니다 :)
죄송 대답을 수락하지 않습니다 소수점 이하 2 자리까지 반올림 기억 ... – Contempt
당신은 [를 사용할 수 있습니까 bisect] (http://docs.python.org/library/bisect.html) 패키지? –
아니,이 어려운 방법 ... 내 코드는 새로운 상한 및 하한을 사용하여 작성해야하며 이전 코드는 위에 게시했습니다. 큰 숫자로도 빠르게 작동해야합니다 ... 내 코드는 그렇게하지 않습니다. 그것은 MIT 웹 사이트에서 왔고 나는 스스로 공부하고 있습니다 ... – Contempt