全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2051 2
2016-07-04
最近遇到这么一道题目,问:

1!*2!*3!*......*100!共有多少位数?

对于这个问题,我的想法是,上面的表达式,可以变形为:

1^100*2^99*3^98*......*100^1

因为求的是有多少位数,而不是具体结果,所以取log10(),这样就将乘方变为相乘,相乘变为相加,打开R程序,自然而然就写出了求解的表达式:

sum(log10(1:100)*100:1)

感触是:
1、整个过程非常流畅,脑中所想基本立刻变为程序代码,不用绕弯,不用为怎样将数学公式变为代码而增加额外的思考过程。大神Hadley Wickham所说的R语言通过牺牲一部分效率来增加代码的灵活性和直观性,助力思维过程,确实如此;

2、接触R语言一段时间,习惯向量化思维后,对此类实际运用,思考更加连贯,收获挺大。

3、这道题是广州市一家重点中学的小升初面试题。注意,小升初,面试题,论坛中有多少人能够心算出来?现在的小孩都已经逆天到这种程度了吗?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-7-4 17:07:55
不知道数学理论的话,对于大整数,直接Python算。。
复制代码


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-7-4 17:41:43
十里春风 发表于 2016-7-4 17:07
不知道数学理论的话,对于大整数,直接Python算。。
如果用R语言,表达式上只需要prod(factorial(1:100)),不过确实不支持这么大的数,最多 只到prod(factorial(1:26))。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群