BEGIN-2 序列求和
資源限制
時(shí)間限制:1.0s 內(nèi)存限制:256.0MB
問題描述
求1+2+3+…+n的值。
輸入格式
輸入包括一個整數(shù)n。
輸出格式
輸出一行,包括一個整數(shù),表示1+2+3+…+n的值。
樣例輸入
4
樣例輸出
10
樣例輸入
100
說明:有一些試題會給出多組樣例輸入輸出以幫助你更好的做題。
一般在提交之前所有這些樣例都需要測試通過才行,但這不代表這幾組樣例數(shù)據(jù)都正確了你的程序就是完全正確的,潛在的錯誤可能仍然導(dǎo)致你的得分較低。
樣例輸出
5050
數(shù)據(jù)規(guī)模與約定
1 <= n <= 1,000,000,000。
說明:請注意這里的數(shù)據(jù)規(guī)模。
本題直接的想法是直接使用一個循環(huán)來累加,然而,當(dāng)數(shù)據(jù)規(guī)模很大時(shí),這種“暴力”的方法往往會導(dǎo)致超時(shí)。此時(shí)你需要想想其他方法。你可以試一試,如果使用1000000000作為你的程序的輸入,你的程序是不是能在規(guī)定的上面規(guī)定的時(shí)限內(nèi)運(yùn)行出來。
本題另一個要值得注意的地方是答案的大小不在你的語言默認(rèn)的整型(int)范圍內(nèi),如果使用整型來保存結(jié)果,會導(dǎo)致結(jié)果錯誤。
如果你使用C++或C語言而且準(zhǔn)備使用printf輸出結(jié)果,則你的格式字符串應(yīng)該寫成%I64d以輸出long long類型的整數(shù)。
Code
C\C++
#include <stdio.h>int main() {unsigned long long n, index;unsigned long long sum;scanf("%d", &n);if (n % 2 == 0) {sum = (n / 2) * (1 + n);} else {sum = (n / 2) * (1 + n) + (n / 2) + 1;}printf("%lld", sum);return 0; }Python
n = int(input()) print((n + 1) * int(n / 2) if n > 1 else 1) 與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的BEGIN-2 序列求和的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BEGIN-1 A+B问题
- 下一篇: BEGIN-4 Fibonacci数列