搜尋

首頁  >  問答  >  主體

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

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

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

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

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

天蓬老师天蓬老师2767 天前633

全部回覆(6)我來回復

  • 巴扎黑

    巴扎黑2017-04-17 13:33:55

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

    時間複雜度O(1).

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:33:55

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

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 13:33:55

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

    回覆
    0
  • 黄舟

    黄舟2017-04-17 13:33:55

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

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 13:33:55

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

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 13:33:55

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

    回覆
    0
  • 取消回覆