自己總結的大數運算(大數運算真是糾結,也吃虧不少):
#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...