ACM 大數運算 正整數

2021-07-11 22:21:48 字數 1388 閱讀 1302

自己總結的大數運算(大數運算真是糾結,也吃虧不少):

#include

#define max 105

加法:void add(char num1,char num2,int sum) 

//傳入大數1,2.  輸出結果sum.

j = 0;

for(i = len2-1; i >= 0; --i)

for(i = 0; i < max; ++i) }}

減法:void subtraction(char num1,char num2,int result) 

//傳入大數1,2.  輸出結果result

j = 0;

for(i = len2-1; i >= 0; --i)

for(i = 0; i < max; ++i) }

} 乘法:

void mul(char num1,char num2,int result) 

//傳入大數1,2.  輸出結果result

j = 0;

for(i = len2-1; i >= 0; --i)

for(i = 0; i < len1; ++i) }

for(i = 0; i < max*2; ++i) }}

除法: 

//除法比較特別. 傳入大數num,和較小數n,商result,餘數remainder. 

(有待改進,因為靈感來自大數求mod)

void division(char num,int n,int &result,int &remainder)

divide++;

}result = 0;

remainder = 0;

for(i = divide-1; i >= 0; --i) }

求mod:

void mod(char num,int n,int &result)  // 傳入大數num,和較小數n,餘數result

divide++;

}result = 0;

for(i = divide-1; i >= 0; --i) }

o(n)時間複雜度求解大數求mod:

int mod(char num,int m)

return ans;}

o(logn)時間複雜度求解a^n mod m  (m <= 10^9):

__int64 pow_mod(__int64 a,__int64 n,int mod)

三個求餘的公式:

(a+b) mod n = ((a mod n) + (b mod n)) mod n ①

(a-b) mod n = ((a mod n) - (b mod n) + n) mod n ②

ab mod n = (a mod n) (b mod n) mod n ③

大數除(正整數整除)

大數除 正整數整除 my solution 2015.10.31 include includechar c1 100 c2 100 int t1 100 t2 100 result 100 int yuchu int a,int b,int n,int m for i 0 i 0 i 找出最高位不...

正整數的大數相加

1 忽略演算法的優化,這個只是我個人寫出來,個人測試後沒問題的 不是啥時間空間複雜度最優的,也不一定的完全正確的。2 演算法針對輸入的要求必須是正整數之間的相加。負數,小數 分數 複數不行。3 思路,非常簡單,從低到高,逐位相加,然後將每一位相加的結果合併在一起就是最後的結果。其他的請看 packa...

C 超長正整數運算

文字檔案1.txt和2.txt分別儲存超長正整數,然後讀取兩個數進行加法 減法 乘法運算,如下 using system using system.collections.generic using system.linq using system.text using system.io usin...