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

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

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

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

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

天蓬老师
天蓬老师

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

全部回覆(6)
巴扎黑

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

時間複雜度O(1).

洪涛

樓上正解呀,我覺得這個題主要考察:自己構造一個資料型態(大整數),然後實現其四則運算吧,因為從題目看來顯然其值超過了一般整型能夠表示的範圍。

刘奇

這個不是程式設計方法的問題了,這個是你的解題方法的問題了。

黄舟

如果所得的資料太大可以用陣列保留每一位數字再輸出

左手右手慢动作

等差數列求和的問題啊! ! !你要考慮的是怎麼快速計算 n*(n+1)/2。拋磚引玉,例如除以二你可以採用位移來加速。

小葫芦

看到程式設計題目的時候,很多時候都容易從電腦思維裡考慮問題,但是像這種純計算的問題,從數學思維考慮,應該可以獲得更加簡潔的回答。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板