专栏名称: 网易百行探秘
实用技能学习平台,帮你发现感兴趣的课程,成为更好的自己。
目录
相关文章推荐
51好读  ›  专栏  ›  网易百行探秘

老太太抛9枚硬币、总值1.7元,到底有几种硬币组合方式

网易百行探秘  · 公众号  · 学习  · 2017-06-30 21:24

正文

年过八旬的老太太把硬币扔进了飞机发动机求平安,结果导致航班延误。


她说,抛了9枚硬币、总值1.7元,到底有几种硬币组合方式?两位程序猿分别用C语言和Python给出了解答。

设:1分有a个,2分有b个,5分有c个,1角有d个,5角有e个,1元有f个。

那么应该满足如下条件:

1) 1a+2b+5c+10d+50e+100f=170

2) a+b+c+d+e+f=9

且,abcdef均为整数且不能为负。


对于以上多元一次方程,解法有很多种,以我有限的数学知识,再加上搜索,可能存在的数学解法有:矩阵解法、克莱姆法则,规划求解。


上海某高中数学老师给出一个求解方法是 数论 ,但他没空解答我的无聊问题。


EXCEL函数 也是一种解法。


手工列举 的方式,天然环保,我给出了三个组合,但如果遇到下次抛硬币的枚数不同或者面值不同,这种方法不能举一反三。


请教专业人士后,杭州西溪的巴巴码农(感谢友商)给出一种 C语言递归解法


他可能被老板发现在干一件不属于他的工作,没来得及跑出结果。

上海一位叫“右手”的码农同志(我喜欢他的名字)给出另一种求解方法。尽管他可以用多种语言求解,但考虑到正在被老板压榨,只能给出一种较为简单的代码求解方法。


他用的 Python语言 ,代码如下:


回车

得出九种组合(数字很吉利)

1)1,1,1,1,1,5,10,50,100

2)1,1,1,2,5,5,5,50,100

3)1,1,1,2,5,10,50,50,50

4)1,1,2,2,2,2,10,50,100

5)1,2,2,5,5,5,50,50,50

6)2,2,2,2,2,5,5,50,100

7)2,2,2,2,2,10,50,50,50

8)5,5,10,10,10,10,10,10,100

9)10,10,10,10,10,10,10,50,50



那么,你是怎么来解决这个问题的呢?

欢迎在下方给我们留言你的解题方法!

你可以画图,

也可以套用数学公式,

只要你能得出答案,







请到「今天看啥」查看全文