本期的題目,來自一本古老的書籍《孫子算經》,是一道很經典的數學題:
今有雉兔同籠,上有三十五頭,下有九十四足,問雉兔各幾何?
翻譯過來就是:
有若幹隻雞和兔同在一個籠子裡,從上面數,有35個頭,從下面數,有94隻腳。問籠中各有多少隻雞和兔?
請問答案是多少?
從純數學角度來看有不少種解法。那麼用代碼實作的話,你會選擇怎樣寫呢?
附加題:輸入頭數 m 和腳數 n,輸出雞的數量 c 和兔子的數量 r,或提示無解。
參考代碼将在下周給出,也可學習其他同學在留言中送出的代碼。
期待各位同學送出解答。
送出代碼可以使用 paste.ubuntu.com 或
codeshare.io 等代碼分享網站,隻需将代碼複制上去儲存,即可獲得一個分享位址,非常友善。
往期問題可通過公衆号菜單欄“課外輔導”欄目中進入檢視。
【解答】房貸電腦
上次的題目,從編碼的層面來說并沒有什麼難度,隻要你自己推導出或從網上找到計算公式,然後正确實作即可。
等額本息
每月月供額=[貸款本金×月利率×(1+月利率)^還款月數]÷[(1+月利率)^還款月數-1]
總利息=還款月數×每月月供額-貸款本金
等額本金
首月還款=貸款本金÷還款月數+貸款本金×月利率
每月減額=貸款本金÷還款月數×月利率
總利息=[(總貸款額÷還款月數+總貸款額×月利率)+總貸款額÷還款月數×(1+月利率)]÷2×還款月數-貸款本金
寫成代碼:
money = int(input('貸款金額(萬):'))
year = int(input('貸款期限(年):'))
rate = float(input('年利率(%):'))
factor = float(input('浮動倍數:'))
month = year * 12
month_rate = rate / 100 * factor / 12
money *= 10000
month_pay = (money * month_rate * (1 + month_rate) ** month) / ((1 + month_rate) ** month - 1)
all_pay = month_pay * month
print('等額本息')
print('每月還款 %.2f' % month_pay)
print('總支付利息 %.2f' % (all_pay - money))
month_pay = money / month + money * month_rate
pay_down = money / month * mo nth_rate
all_pay = ((money / month + money * month_rate) + money / month * (1 + month_rate)) / 2 * month
print('等額本金')
print('首月還款 %.2f' % month_pay)
print('每月遞減 %.2f' % pay_down)
print('總支付利息 %.2f' % (all_pay - money))
@王炎 和 @王文亞 同學都實作了 GUI 的版本,效果很不錯
:
(在我的電腦上顯示比例稍稍有點不正常)
@迫聳、@L 也送出了正确的答案(@燦夜 的代碼頁面打不開了)。