我输了!一道小学数学题,我用python才解出来!

发布时间:2020-04-10 16:21:03

​​家里的小学生拿着一道小学数学题来问我。

题目是这样的。

 

有一个小于500的三位数abc,对于这个三位数,甲乙丙丁有如下说法:

 

甲:这个三位数能被2整除3次;

乙:这个三位数能被3整除2次;

丙:这个三位数能被7整除;

丁:这个三位数的各个数字之和是15;


已知甲乙丙丁中有一个人说谎了;请问这个三位数是多少?

 

emmm……这不就是一道逻辑题嘛!

 

 

先假如丁错,则甲乙丙对,此时最小的abc=(2^3)*(3^2)*7=504>500,不在题干范围之内。

那么也就是丁必对,甲乙丙中有一错。

 

等一下,

然后嘞?

 

并不能判断甲乙丙哪个错啊!!!

 

难道要先假设甲乙丙中一个是错误,然后挨个穷举看哪个三位数满足丁(各个数字之和是15)的条件吗?

 

这不科学!与其穷举,不如python!

循环+判断走起!

 

 

成功得到答案:

 乙说谎,abc=168 

事情到这里,我完全忽略了一个问题。

这是一道应用题,

光是知道答案是没用的,

总不能写几行代码交上去吧。

 

于是,我靠着编程思维,

再次提取出题目中的有效信息。

 

按照甲的说法,abc能被2^3=8整除。

按照乙的说法,abc能被3^2=9整除。

按照丙的说法,abc能被7整除。

按照丁的说法,abc相加为15。

 

并且,绞尽脑汁回想小学数学阶段的知识点。

终于!是整除的特性

 

被3整除:数字之和能被3整除(逢3必消)

被9整除:数字之和能被9整除(逢9必消)

 

同时,丁的说法中还有隐藏条件:abc能被3整除,不能被9整除。

 

这样一来,乙与丁的说法就是矛盾的。

 

假如丁错,则甲乙丙对,此时最小的abc=(2^3)*(3^2)*7=504>500,不在题干范围之内。

 

所以乙错了,甲丙丁是对的,此时abc能被8(甲)、7(丙)、3(丁)整除,则abc是8*7*3=168的倍数。小于500的168的倍数有168、336,只有1+6+8=15。

 

故abc = 168。

 

很好,解题思路清晰,答案正确,小学生也能理解。

 

 

用python解数学题

 

从计算机这个名字就可以看出来,它的本行就是计算,起初发明计算机也是用来处理复杂计算用的。编程语言,例如人工智能时代盛行的python,也是完全可以用于解决数学问题,并且逐渐培养逻辑思维能力的。

 


编程可以让你将数学课上一些晦涩难懂的内容变得简单直观,也能让你轻松地绘图、调整、探索,进而发现更多乐趣。

 

通过循环来计算对同一个函数输入不同参数的结果。如果用人手计算,可能要花半个小时的时间,但计算机瞬间就完成了。在这样的基础上,我们只要将一些计算的过程抽象成一个函数,再对其进行一些适当的扩展,就可以让计算机来计算了。

 

优必学提供从幼儿园到高中不同阶段的人工智能教育整体解决方案。通过与全球顶级高校和高科技企业的通力合作,优必学以课程赋能为抓手,致力于构建“内容+硬件+软件+服务”的AI教育生态圈。