最近遇到这么一道题目,问:
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、这道题是广州市一家重点中学的小升初面试题。注意,小升初,面试题,论坛中有多少人能够心算出来?现在的小孩都已经逆天到这种程度了吗?