【发布时间】:2011-12-06 11:08:32
【问题描述】:
3 个连续数字 11、12 和 13 的平方和为 434(即 121 + 144 + 169 = 434)。数字 434 从两种方式读起来都是一样的,被称为回文。我需要找出小于10^7 的数字的总和,它可以表示为连续平方的总和,结果是
回文。如果在 2 个不同的序列中,一个数字重复,然后求和
他们两次。也就是说,如果 11 出现在 2 个连续的数字序列中,则将其相加两次。
我需要根据上面的场景写一个程序。
我的理解是我们必须找到最大为 10,000,000 的平方,然后是所有数字。我应该如何在 C 中编写一个程序来做到这一点?
【问题讨论】:
-
你不明白哪一部分?如何找到一个数的平方?如何遍历所有数字直到某个数字?如何跟踪哪些数字满足您的标准,哪些不满足?
-
尝试
(*0)看看未定义的行为是否恰好符合您的要求。 -
而且我认为文本中有错误。它要求回文且小于 10^7 并且是三个连续数字的平方和的数字之和,然后它添加规则“如果在 2 个不同的序列中,一个数字重复,则将它们相加两次。”这使得它认为你应该对 11、12、13 而不是 434 求和。(因为显然不可能有两个相等的连续平方和!)
-
听起来你需要某种循环来迭代,或者你可以从 10000000 开始递归地执行它。这样看起来会更好,但更难调试。您可能必须注意数据类型...这就是我解决问题的方式。
-
让我们这样说:检查回文(是一个词吗?)比其他任何事情都复杂:-)