(整型)大數乘法
#include
#include
#include
#include
using
namespace std;
intmain()
p = a[i]
-'0'
;//存放位上的資料
num =0;
//初始化進數為 0
k = t;
//初始化起始位置
for(
int j = b.
size()
-1; j >=0;
--j)
q = b[j]
-'0'
; temp = p * q + num + c[k]
;//乘積+進數+本位上原來的數
c[k]
= temp %10;
//對數取模才是 留在該位的數
num = temp /10;
//進數
++k;
} c[k]
= num;
//將剩餘的數 存放在下一位
++t;}if
((a[0]
=='-'
&& b[0]
!='-')||
(a[0]!=
'-'&& b[0]
=='-'))
for(
int i = k; i >=0;
--i)
//排除掉前導 0
}//輸出結果
for(
int i = k; i >=0;
--i)
return0;
}
大數除法(1) 高精度除以低精度#include
#include
#include
#include
using
namespace std;
intmain()
int lena =0;
//去除前導0
while
(sum[lena]==0
&& lena < a.
size()
-1)//輸出商 與 餘數
cout <<
"商:"
;for
(int i = lena; i < a.
size()
;++i)
cout <<
" 餘:"
;printf
("%d"
, x)
;return0;
}
大數除法 高精度除以高精度
高精除以低精度是對被除數的每一位(這裡
的「一位」包含前面的餘數,以下都是如此)
都除以除數,而高精除以高精則是用減法模擬
除法,對被除數的每一位都減去除數,一直減到當前位置的數字(包含前面的餘數)
小於除數(由於每一位的數字小於10,所以
對於每一位最多進行10次計算)具體實現程式如下:
#include
#include
using
namespace std;
int a[
101]
, b[
101]
, c[
101]
, d, i;
//輸入大數
void
instring
(int a)
}void
print
(int a)
//資料列印
//位數w為0 則輸出0
for(
int i = a[0]
; i >
0; i--
) cout << a[i]
;//不為0 則慢慢輸出資料
cout << endl;
return;}
intcompare
(int a,
int b)
//比較兩個數
return0;
}void
numpcpy
(int p,
int q,
int det)
//複製p陣列到q陣列從det開始的地方
//改變陣列的位數
q[0]= p[0]
+ det -1;
}void
jian
(int a,
int b)
//表明a是減完了
if(flag ==1)
//a比b大 可以進行減法
a[i]
-= b[i];}
while
(a[0
]>
0&& a[a[0]
]==0) a[0]
--;//修正a的位數 如果他的最高項是0的}}
void
chugao
(int a,
int b,
int c)
}while
(c[0
]>
0&& c[c[0]
]==0)c[0]
--;//刪除前導的0
return;}
intmain()
大數乘法和大數除法模板
找個時間整理一下 下次留著用,主要是大數乘法和大數除法的 坑了爹乙個下午,很多的細節都疏忽了。反轉字串函式,方便索引各位數 void reverse char c for while c 處理進製,直到進製為0 while for 將兩個乘數和乘積都改為大端法 reverse dest revers...
大數加法 減法 乘法 除法
大數加法 實現 include include typedef char str 1000 void printnum int sum int len 輸出 void add str a int len a str b int len b 計算a b 只能 while len a 1 if c 0 ...
大數運算,佇列實現大數 加法 乘法 除法 模除
以下 可進行大數加法 減法 乘法 除法 餘除,和比較大小的計算 佇列實現 包括負數 include include include include include includeusing namespace std const int mod 1e9 typedef long long ll co...