二、高精度除高精度
採用計算機做高精度除法時,模擬日常除法的步驟。但計算機不可能做「試商」,這時,我們可以採用減法來模擬"試商"的過程。演算法的步驟如下:
1、將除數移動和被除數對齊,位數不夠時,補0。
2、利用被除數減去除數,一直減到被除數小於除數,減的次數,就是「試商」的結果,每移動一次。
3、重複上述步驟,一直到被除數和除數的位數相等為止。
#include
using
namespace std;
vector<
int>
div(vector<
int>
&a,int b,
int&r)
//r是餘數,引用。
reverse
(c.begin()
,c.end()
);while
(c.size()
>
1&&c.
back()
==0) c.
pop_back()
;//去前導0
return c;
}int
main()
#include
using
namespace std;
int a[
100005];
int b[
100005];
int c[
100005];
intcompare
(int a,
int b)
return0;
//各位都相等返回0
}void
copyarray
(int p,
int q,
int m)
q[0]=p[0]
+m-1;}
void
sub(
int a,
int b)
if(flag==1)
//大於
a[i]
-=b[i];}
while
(a[0
]>
0&&a[a[0]
]==0) a[0]
--;}}
void
div(
int a,
int b,
int c)
}while
(c[0
]>
0&&c[c[0]
]==0) c[0]
--;}void
print
(int a)
//輸出
for(
int i=a[0]
;i>
0;i--
) cout<}int
main()
for(
int i=
1;i<=b[0]
;i++
)div
(a,b,c)
;print
(c);
print
(a);
return0;
}
高精度除高精度
演算法流程 第一步,讀入被除數 a 和 除數 b,判斷是否 a b,是則輸出 0 並結束演算法,否則令 answer 0 第二步,令餘數 remainder 0,令 i 從被除數最高位的下標開始 第三步,令 remainder remainder 10 a i 令 c 9 第四步,判斷是否 b c ...
大數相乘「高精度乘低精度」和「高精度乘高精度」
二 高精度乘高精度 如下 由於計算機的儲存位元組有限,所以不能完整表示乙個很大整數的精確值,這時候就得用到其他的方法,稱之為高精度演算法。這裡的高精度乘法主要指按位模擬乘法,實際上就是模擬乘法的過程,也就是筆算的過程。高精度乘低精度,即乙個大數與乙個小於10000的數相乘,大數使用字串來進行儲存,較...
9111 高精度除法 高精度除高精度
time limit 1 second memory limit 2 mb 問題描述 輸入兩個高精度非0整數,輸出它們的整數商 不考慮小數部分 輸入只有兩行,第一行乙個整數x,第二行乙個整數y。其中0 x 10 200,0 y 10 200 輸出有1行,為兩個數的整數商。22222222223333...