c++ - C+中如何实现高效累加?
天蓬老师
天蓬老师 2017-04-17 13:31:55
0
6
635

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

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

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

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

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(6)
巴扎黑

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

时间复杂度O(1).

いいねを押す +0
洪涛

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

いいねを押す +0
刘奇

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

いいねを押す +0
黄舟

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

いいねを押す +0
左手右手慢动作

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

いいねを押す +0
小葫芦

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート