入門訓練 序列求和

問題描述
求1+2+3+...+n的值。
輸入格式
輸入包括一個整數n。
輸出格式
輸出一行,包括一個整數,表示1+2+3+...+n的值。
樣例輸入
4
樣例輸出
10
樣例輸入
100

說明:有一些試題會給出多組樣例輸入輸出以幫助你更好的作題。測試

通常在提交以前全部這些樣例都須要測試經過才行,但這不表明這幾組樣例數據都正確了你的程序就是徹底正確的,潛在的錯誤可能仍然致使你的得分較低。字符串

樣例輸出
5050
數據規模與約定
1 <= n <= 1,000,000,000。

說明:請注意這裏的數據規模。io

本題直接的想法是直接使用一個循環來累加,然而,當數據規模很大時,這種「暴力」的方法每每會致使超時。此時你須要想一想其餘方法。你能夠試一試,若是使用1000000000做爲你的程序的輸入,你的程序是否是能在規定的上面規定的時限內運行出來。class

本題另外一個要值得注意的地方是答案的大小不在你的語言默認的整型(int)範圍內,若是使用整型來保存結果,會致使結果錯誤。循環

若是你使用C++或C語言並且準備使用printf輸出結果,則你的格式字符串應該寫成%I64d以輸出long long類型的整數。程序

解題代碼:方法

#include <stdio.h>
#include <stdlib.h>
int main() {
long long n=0,sum=0;
scanf("%I64d",&n);
sum=(1+n)*n/2;
printf("%I64d",sum);
return 0;
}數據

思考:語言

一開始總出不來,連樣例都不行,結果發現問題在n的類型定義有誤,一開始企圖用long定義,scanf語句的%I64d一開始也沒用。這還讓我和朋友一塊兒糾結半天,心情複雜.jpgdi

相關文章
相關標籤/搜索