C 大數加法 string

2021-10-04 01:10:35 字數 929 閱讀 5669

int :-2147483648~2147483647 (10位數)

unsigned int :0~4294967295 (10位數)

long long:-9223372036854775808~9223372036854775807 (19位數)

unsigned long long:0~18446744073709551615 (20位數)

上面給出了數字的位數範圍。

現在如果有乙個需求,我們要乙個20位的數字加20位的數字,這個結果可能是20位,那麼不會超過範圍;但結果也可能是21位。

不說20位加20位,比如20位9加1,很明顯是1後面有20位0,超出了範圍。這時就需要大數加法。

大數加法有很多種,我用的是c++中的string。用string存放大數來相加。

含注釋,其實比較好理解,舉個簡單的例子跟著**走就可以。(簡單例子完了再看比較複雜的例子)

#include

#include

#include

using

namespace std;

string add

(string a,string b)

int tmp=0;

//相加後的進製

for(

int i=

0;i++i)

reverse

(ans.

begin()

,ans.

end())

;return ans.

substr

(ans.

find_first_not_of

('0'))

;}intmain

(int argc,

char

** ar**)

C 使用string的大數加法運算(1)

專案要點 1.大數指的是遠超long long int的資料 2.將大數用矩陣進行儲存,並通過矩陣實現運算 3.本人採用字串進行儲存,應注意char的特點 比如 char a 161 cout 此時會輸出 95,而不是161,char型別首個位元位是作為正負號的 加法,此處只做自然數加法,因為存在負...

c 大數加法

在c 中,我們經常需要表示整數。但是,c 的基本資料型別中,最大的long也只能表示 9,223,372,036,854,775,808 到 9,223,372,036,854,775,807之間的數。貨幣型別也不是無限大。如果我們需要表示更大的數,就需要用到一定的演算法來完成。這次,我和大家一起討...

大數 加法 c語言

最近遇到乙個關於大數的問題頓時感覺好方,決定系統學一下大數。注意 關於大數問題,由於陣列不好界定輸入數的大小 陣列的長度 因此主要思想就是先用字串輸入儲存在字串陣列中,再逆序存入整形陣列進行最後逐位運算。剛開始通過部落格寫的 思路 輸入採用字元陣列儲存,然後將輸入存在整形陣列裡,然後逐位相加即可,同...