藍橋杯 求和問題 解決計算時資料溢位

2021-10-25 17:10:00 字數 1257 閱讀 1342

求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...