求1+2+3+…+n的值。結果可能非常大,將結果對1000000007取模。
輸入包括乙個整數n(1<= n <= 1e9)。
輸出一行,包括乙個整數,表示1+2+3+…+n的值。
1.本題要求用程式來進行等差數列求和,題目明確提示數很大,所以做題時應當考慮資料的溢位問題,那麼就要使用容量盡可能大的資料型別的變數來進行計算,各種資料型別的變數的長度如下:
型別儲存大小
值範圍char
1 位元組
-128 到 127 或 0 到 255
unsigned
char
1 位元組 0 到 255
signed
char
1 位元組 -128 到 127
int2 或 4 位元組
-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
unsigned int
2 或 4 位元組
0 到 65,535 或 0 到 4,294,967,295
short
2 位元組
-32,768 到 32,767
unsigned short
2 位元組
0 到 65,535
long
4 位元組
-2,147,483,648 到 2,147,483,647
unsigned long
4 位元組
0 到 4,294,967,295
long int
4-2147483648~+2141483647
long long
8-9223372036854775808 9223372036854775807 (2^63 - 1)
long long long int
8-9223372036854775808~+9223372036854775807
從上面的表中可以得知,long long型別的變數應該可以滿足該題目的要求,所以,本題的變數應該使用long long型別,避免資料溢位。
2.本題另外乙個點就是計算的時間限制,如果利用迴圈加法計算結果,那麼時間可能超出限制,解決方法有兩種, ~~一種是利用利用for迴圈,提交**時盡量在伺服器空閒的時候提交,有可能直接通過。(劃掉)~~第二種方法就是利用高中學習的等差數列公式,這樣的演算法將節省大量的時間。具體方法如下圖**所示。
#include
#include
intmain()
oom問題解決
dalvik虛擬機會為應用程式分配固定大小的heap 如果使用超過了這個heap的大小,且沒有可被 物件,就會報oom。多張較大會迅速占用空間造成oom。我們可以使用一下的方法來減少這種情況的產生 1.減少單張的大小,根據螢幕大小來對bitmap做resize。private void setima...
too many open files問題解決辦法
今天用 往liunx中寫檔案,檔案很多 執行一會就日誌上就報錯 too many open files 結果找了半天才解決這個問題,現在給大家分享一下。首先用 ulimit a 命令看看linux的open files值是多少,結果乙隻有1024,不夠用的。然後修改linux的配置檔案,修改 etc...
haoop問題解決
1.namenode不能啟動 cannot lock storage tmp dfs name.the directory is already locked.上網查了查,基本上有兩個辦法 1.重新格式化namenode 2.許可權問題 chown r hadoop hadoop tmp dfs n...