【问题标题】:Finding the squares up to 10,000,000 in C在 C 中找到最大为 10,000,000 的正方形
【发布时间】: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 开始递归地执行它。这样看起来会更好,但更难调试。您可能必须注意数据类型...这就是我解决问题的方式。
  • 让我们这样说:检查回文(是一个词吗?)比其他任何事情都复杂:-)

标签: c math


【解决方案1】:

您可能需要一个增加变量的 for 循环?使用此变量,您可以生成 3 个连续数字。然后将平方数相加。如果它高于您的最大数字,则停止循环。如果它在下面你检查它是否是回文?

【讨论】:

    【解决方案2】:

    使用蛮力方式就是这样一种可能的方式。

    1 to 10^7 - 2 中迭代一个变量i,这样您就可以对变量(包括i)的前三个值的平方和求出它是否是回文。

    即。当i=5 时,在for 循环中 你需要找出 i^2 + (i+1)^2 + (i+2)^2 是否是回文。

    我不确定,但你宁愿选择long long,因为你需要计算平方。

    【讨论】:

      猜你喜欢
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      相关资源
      最近更新 更多