【发布时间】:2017-01-29 13:23:11
【问题描述】:
如果你知道1+2+3+..+n的结果,那就是n*(n+1)/2。
例如,如果结果是5050,那么我可以知道n 是100。如何获取n。但是,您只能通过加法和减法来计算n。
我知道如何获得n i 是我可以通过计算每个不同的1+2+3+...+n 来遍历从1 到n 的自然数,例如1、1+2、1+2+3。 ..1+2+..+n,然后我可以检查每个结果到5050,然后我可以找到n 是100。但是我发现计算步骤会超过 2000 步,所以有一个很好的算法可以找到n?
谢谢!。
【问题讨论】:
-
从 1 到 100 的数字相加应该只需要 100 步,而不是 2000 步。
-
编辑你的标签并添加什么样的编程语言
-
@melpomene,不是从 1 到 100,而是从 1 到 2,然后从 1 到 3,直到 1 到 100,然后你才能找到正确的 n。
-
@zhenguoli 为什么每次都从1重启?如果您刚刚计算了 1+2+...+n,则只需将 n+1 添加到之前的结果即可得到 1+2+...+n+(n+1)。
-
为什么不简单地求解二次方程?