問題描述 求1+2+3+...+n的值, 輸入格式 輸入包括一個整數n, 輸出格式 輸出一行,包括一個整數,表示1+2+3+...+n的值, 樣例輸入 4 樣例輸出 10 樣例輸入 100
說明:有一些試題會給出多組樣例輸入輸出以幫助你更好的做題,
一般在提交之前所有這些樣例都需要測驗通過才行,但這不代表這幾組樣例資料都正確了你的程式就是完全正確的,潛在的錯誤可能仍然導致你的得分較低,
樣例輸出 5050 資料規模與約定 1 <= n <= 1,000,000,000,說明:請注意這里的資料規模,
本題直接的想法是直接使用一個回圈來累加,然而,當資料規模很大時,這種“暴力”的方法往往會導致超時,此時你需要想想其他方法,你可以試一試,如果使用1000000000作為你的程式的輸入,你的程式是不是能在規定的上面規定的時限內運行出來,
本題另一個要值得注意的地方是答案的大小不在你的語言默認的整型(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一開始也沒用,這還讓我和朋友一起糾結半天,心情復雜.jpg
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/54981.html
標籤:C
上一篇:入門 選擇排序
下一篇:perl生成匯編
