本期的题目,来自一本古老的书籍《孙子算经》,是一道很经典的数学题:
今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?
翻译过来就是:
有若干只鸡和兔同在一个笼子里,从上面数,有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 也提交了正确的答案(@灿夜 的代码页面打不开了)。