vector string實現大數加法乘法

2022-01-26 05:24:50 字數 2241 閱讀 7767

理解 vector 是乙個容器,是乙個資料集,裡邊裝了很多個元素。與陣列最大的不同是 vector 可以動態增長。

用 vector 實現大數運算的關鍵是,以 string 的方式讀入乙個大數,然後將字串的每乙個字元 s[i] 以 int 形式賦給 vectora 中的每乙個元素。然後將 a[i] 和 a[j] 加起來(或者乘起來)。每兩個元素加起來的結果 <= 18,乘起來的結果 <= 81。

用 string 實現大數加法的方法跟 vector 差不多,但是用 string 做大數乘法就有點麻煩,我寫了一會兒沒寫出來。

1. 用 vector 實現大數加法:

1 #include 2 #include 3 #include 

4 #include 56//

#define min(a,b) ((a>b)?(b):(a))7//

#define max(a,b) ((a>b)?(a):(b))

8using

namespace

std;910

void bigsum(vector &a, vector &b, vector &sum)

1119

20 sum.assign(a.size(), 0

);21

for (i=a.size()-1, j=b.size()-1; i>=0; --i)

2228

else sum[i]=a[i];29}

3031

for (k = sum.size() - 1; k >= 0; --k)

3239}40

}4142int

main()

4359

return0;

60 }

執行:

2. string 實現大數加法:

1

//this algorithm is from "oj-killer" of code.google.com

2 #include 3 #include //

freopen

4 #include //

string56

using

namespace

std;

7string sum(string a,stringb)8

13int

i,j;

14for(i=a.length()-1,j=b.length()-1;i>=0;i--,j--)

1523}24

return

a;25}26

intmain()

2736

return0;

37 }

執行:

3. vector 實現大數乘法:

輸入:n

輸出:2^(n+1)-1

該演算法來自:

1 #include 2 #include 3 #include 

4using

namespace

std;56

void multiply(const vector &a, const vector &b, vector &result);78

int main(void)9

2425

for (i = 0; i < a.size() - 1; ++i)

26 cout <

27 cout << c[a.size() - 1] - 1

;28 cout <

30return0;

31}3233

void multiply(const vector &a, const vector &b, vector &result)

3444

45for (k = result.size() - 1; k >= 0; --k)

4655

else

5661}62

}63 }

執行:

第9章順序容器 vector string練習題

include includeusing namespace std vector iterator findint vector iterator beg,vector iterator end,int ival int tmain int argc,tchar argv vectorivec i...

大根堆實現

堆 有兩種,一種是大根堆,另一種是小根堆。大根堆的意思是在跟的位置那個數是最大的。同理,小根堆的根元素是最小的。堆是乙個滿的二叉樹,除了最後乙個節點可能不是滿的。所以用陣列去陣列去實現它。乙個節點的index為i,則這個節點的兩個子節點的下標應該為2 i 1和2 i 2 父結點那就是 i 1 2 下...

大整數加法實現

先貼 move num 實現將輸入資料移到陣列末尾 con num 實現將字元轉為數字 add 實現加法,進製操作 注意不列印前導0 include includevoid move num char num while j 0 void conv num char num void add cha...