序列求和 出錯的一點心得

2021-06-20 07:46:53 字數 860 閱讀 8811

除了大二開始,在校oj上做過幾十道acm題後,真心虐心,後來變沒怎麼接觸了。今天閒暇時,看了一道菜菜的題,結果**了好幾遍,大神勿噴。

題目很簡單,求1+2+3+...+n的值。

起初,不管三七二十一,就有了以下的**:

int main(int argc, char* argv)

printf("%ld",sum);

return 0;

}

很顯然,沒有ac,很顯然注意到了資料規模 1 <= n <= 1,000,000,000。

神碼,long int 顯然不能滿足資料長度了,那就使用64位的int ,在vc6.0裡,就用_int64 來定義,ok,測試了下沒問題。

提交**後,報錯了!!編譯錯誤。查了下系統用的是gcc編譯器。

//c/c++中怎樣使用64位整數?

64位整數的型別定義為:long long

使用scanf讀的操作為:scanf("%i64d", &x);

使用printf寫的操作為:printf("%i64d", x);

就這麼幹,準沒錯。果然ac了。

不過發現我這演算法也太渣了。cpu使用843ms,果斷想起初中時候數學多項和公式:首項加尾項

乘以項數除以2,再改進下:

int main()

cpu使用0ms,完美解決。在vc中定義64位整形_int64,使用long long 則會報錯,一種語言的語法和編譯器有關,其實也可以理解,在c語言最初,沒有64位的機器,到後來出現64位,64位長整形沒形成乙個統一的標準。很簡單的一道題,大神勿噴~ 哈哈

SQL一點心得

sql語句將所有 stock 表裡的 縮寫 led甲 替換改寫成 led刷 update dbo stock set 縮寫 replace 縮寫 led甲 led刷 where 縮寫 like led甲 go字首 update mytable set myfield replace myfield,...

Cell myCell一點心得

ctor initializer形如 cell cell mvalue 0 mstring ctor initializer,能在建立資料成員的同時賦初值 1.const方法的工作原理是將方法內用到的資料成員都標記為const引用。因此試圖修改資料成員時,編譯器報錯。2.用explicit關鍵字標記...

openjudge 一點心得

031 校門外的樹 總時間限制 1000ms 記憶體限制 65536kb 描述某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來...