今天是第16题。十分简单。
先计算一个特别大的数字,然后计算这些数字的和。
21^5 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.
What is the sum of the digits of the number 2^1000?
这个题目十分简单,难的是技巧,在R语言里面无法以正常形式显示大数字,都自动转换为科学计数法。
前面讲过可以用format(x,scientific =F)来解决,但是在这一题是失效的。
有一个包专门处理超大数字,就是gmp
library(gmp)
digits <- as.bigz(2^1000) # Define number
answer <- sum(as.numeric(unlist(strsplit(as.character(digits), ""))))
看一下答案。
> answer
[1] 1366
这样的技巧只有在有需求的时候才会知道。在过去的16题中,我自己复习了很多小技巧。
长期更新下去,肯定有收获,所以即使在今天有神贴出现的情况下,我还是要更新。
分割线:
目前看来,这些题目,只要不是追求速度,基本上都能通过遍历的方式得出答案,
但是我已经被卡在了第18题,那个题目暗示:
最好不要通过遍历的方式来解这道题,因为之后会出现一个不容易被遍历的题目。
飞哥说,算法比算力重要,当时刚开始的时候,觉得这些题目都太简单,做久了会很厌烦。
现在看来,一点没有!
每天把这些题当成休息,不用开组会汇报,这本身时间很自在的事。
再加上我已经连续唠嗑16天,每天的分割线就是我的小空间,我有那么多的事还没有讲呢。
如果大家忙完了这一阵,就一起来做题吧。
网友评论