用户:查看:0 回复:14 评论:0 创建时间:2017-07-03T12:45:03
原题目【神灵的密码】链接:https://www.codemao.cn/wiki/forum/4喵8
本次算法第一个解出题目答案的是@梦幻想——来自人间天使,不是很确定是否通过算法解决的,不管怎么样,解出题目也很棒。
@|桔汁糖浆| @~断了个弦~ 两位其实离答案也不远,但是思路上可能被以往数学解题的习惯局限了,这个题其实是要让计算机去算的。
@假·猫老祖@无可否认 这一期的难度其实并不比之前的难,可能是因为这类问题之前没出现过,可以看看这次的解答。
在最后还有一个拓展练习,各位试试看。
在过去,在幼儿园就懂得1+1的小朋友需要花一年的时间,才会学到二位数加法11+11,又花一年的时间,才能学到竖式计算里的9876+6789。
但是现在这个计算机喵,各位如果懂得 1+1 的原理,那你也能很轻松懂得987654321 + 123456789 其实也就是两个数相加,不需要理解计算的技巧的话,利用一个手机里的计算器软件,幼儿园的小朋友也能得到这个复杂算法的答案,而这个就是为什么我们会有这些算法题的原因:利用计算机的能力赋能予人类,让下一代的人类在此帮助之下,能轻易超越上一代的人类。
从前我们在农业喵,需要刀耕火种,技巧最好的农民才能获得好的收成。
利用机械的帮助,现在一个在拖拉机上的农民,能轻易耕种比他过去两千年的所有祖先的加起来更多的农田,利用现代化学和生物学的帮助,一瓶除虫剂的效果就远超过往除虫知识最渊博的专业除虫人。
而现在你们解决的这个问题,你可以拿给学校里数学最好的同学或者老师,不借助计算机的能力,恐怕他们也无能为力。
哪怕是300年前的大数学家,恐怕也要花上很久的时间才能通过计算解决这个问题。
利用计算机来解决问题的核心就是,计算机拥有比人类更强的:
1,存储能力(存储的数据几乎不可能发生丢失,相比之下,人类的记忆就没那么靠谱)
2,计算能力(这个应该不需要解释)
下面给大家讲解一下具体做法:
简单版:
(这里用了box平台,是为了用快速循环这个模块,如果用2D编程平台的重复执行XX遍也是可以的,就是计算的时候会慢很多)
原理其实是遍历一遍:
进阶版:
这里有很多地方可以利用基本的数论来简化计算量,比如其实a是一定小于等于333的。(从 a<b<c, a+b+c=1000 可以推出 a<334)
这里就不一一说了,以下是一个举例,可以优化的地方还有非常多,但这个就不是我们今天要讨论的范围了。
做做看!结果是不是楼上的答案?各位自己试试吧。
拓展问题:
求出满足这三个条件的a,b,c的乘积:
1, a>1000 , b<1000,a,b,c都是自然数
2, a+b+c = 4000
3,a乘以a + b乘以b = c乘以c
请输入a x b x c的乘积!
样例:
a=1500, b=800, c=1700,输入axbxc = 2040000000
同时满足上面三个条件,请找出另外一个满足上面条件的a,b,c的乘积!