首页 > C+中如何实现高效累加?

C+中如何实现高效累加?

蓝桥杯有这么一道题:
问题描述
求1+2+3+...+n的值。
输入格式
输入包括一个整数n。
输出格式
输出一行,包括一个整数,表示1+2+3+...+n的值。

注意事项:
说明:请注意这里的数据规模。

本题直接的想法是直接使用一个循环来累加,然而,当数据规模很大时,这种“暴力”的方法往往会导致超时。此时你需要想想其他方法。你可以试一试,如果使用1000000000作为你的程序的输入,你的程序是不是能在规定的上面规定的时限内运行出来。

如果不用for循环累加的话,还有其他什么更高效的累加方法吗?


如果得出的数据太大可以用数组保留每一位数字再输出


看到编程题目的时候,很多时候都容易从计算机思维里考虑问题,但是像这种纯计算的问题,从数学思维考虑,应该可以获得更加简洁的回答。


这个不是编程方法的问题了,这个是你的解题方法的问题了。


1 + 2 + 3 + ... + n = n * (n + 1) / 2

时间复杂度O(1).


等差数列求和的问题啊!!!你要考虑的是怎样快速计算 n*(n+1)/2。抛砖引玉,比如除以二你可以采用位移来加速。


楼上正解呀,我觉得这个题主要考察:自己构造一个数据类型(大整数),然后实现其四则运算吧,因为从题目看来显然其值超过了一般整型能够表示的范围。

【热门文章】
【热门文章】