[Project Euler]欧拉 Problem 13 回答上次的问题

在前面的一篇文章里,文章链接地址:

http://http://www.cnblogs.com/herbert/archive/2011/01/31/1948181.html

我写了下面这段代码来解决Problem 13。结果一直没有得出答案,今天过完节了,回来看了下,呵呵终于找出问题所在了。

欧拉项目第十三题原解答

这个代码最重要的问题出在,大数相加的时候,不仅要注意末位问题,还要注意首位的特殊处理。对于末位,没有来自低位的进位,所以我设置了进位数组为51位,最后一位为0。对于首位同样要注意,首位是不需要进位的。

下面是修正后的代码:

欧拉项目第十三题修正后的解答

这样就能得出真正的答案了。这个问题一不小心,还真的挺难发现的。按照最开始的那段代码,对于首位其实是丢弃了高位进位,因为数组放不下了。比如56 + 87 低位进位 是 1(13进1), 高位 5 + 8 = 13,此时 高位就应该直接是13 + 1 = 14 不需要进位了。

你可能感兴趣的:(project)