高精度 C 中大整數運算

2021-10-19 08:42:02 字數 2312 閱讀 8661

cin>>a>>b;

for(i=a.

size()

-1;i>=

0;i--

)for

(i=b.

size()

-1;i>=

0;i--

)

#include

#include

using namespace std;

const

int n =

1e6+10;

//+10防止出現邊界問題

vector<

int>

add(vector<

int>

&a,vector<

int>

&b)if

(t)//判斷最高位是否有進製

c.push_back(1

);return c;

}int

main()

for(i=b.

size()

-1;i>=

0;i--

)auto c=

add(a,b)

;//auto讓編譯器自己判斷返回值的型別

// 否則此處應為vectorc = add(a,b);

for(i=c.

size()

-1;i>=

0;i--

)return0;

}

#include

#include

using namespace std;

bool cmp

(vector<

int>

&a,vector<

int>

&b)//判斷ab的大小保證結果正負的正確性

return true;

}vector<

int>

sub(vector<

int>

&a,vector<

int>

&b)while

(c.size()

>

1&&c.

back()

==0)//去掉前導0 如0003->3

c.pop_back()

;return c;

}int

main()

for(i=b.

size()

-1;i>=

0;i--)if

(cmp

(a,b))}

else

}return0;

}

#include

#include

using namespace std;

vector<

int>

mul(vector<

int>

&a,int b)

while

(c.size()

>

1&&c.

back()

==0)//去除前導0,b為0時

c.pop_back()

;return c;

}int

main()

auto c=

mul(a,b)

;for

(i=c.

size()

-1;i>=

0;i--

)return0;

}

#include

#include

#include

using namespace std;

//a除以b,c是商,r是餘數

vector<

int>

div(vector<

int>

&a,int b,

int&r)

//r用過引用傳回

reverse

(c.begin()

,c.end()

);//逆轉元素

while

(c.size()

>

1&&c.

back()

==0)//去掉前導0

c.pop_back()

;return c;

}int

main()

auto c=

div(a,b,r)

;for

(i=c.

size()

-1;i>=

0;i--

) cout

}

高精度整數運算

問題描述 編寫乙個程式,進行高精度整數的加 減 乘運算。輸入兩個十進位製大整數m和 n m n最長可達 50位 根據要求計算運算結果並輸出。輸入形式 標準輸入上依次分行輸入以下內容 1.第一行輸入第乙個大整數m。m可能帶有負號,後面是最長可達 50位的數字序列。2.第二行只有乙個字元,可以是 分別代...

C 高精度運算

高精度加法vector int add vector int a,vector int b if t c.push back 1 return c 高精度減法 判斷a b 的大小,保證函式裡面是大的減小的 bool cmp vector int a,vector int b vector int a...

經典例題 高精度(大整數)運算

大整數運算 1.藍橋杯 大整數階乘 問題描述 輸入乙個正整數n,輸出n 的值。其中n 1 2 3 n 解決思路 n 非常大,可以使用陣列儲存各位,a 0 表示最低位,初始化為1,然後迴圈,每一位都乘以2 3 n,根據各位大小判斷是否向前進製,最後逆序輸出各位即可 include include us...