string bignum :: bigdiv(string s1, string s2)
else
}else
if(f1==1)// 記錄小數字數}}
for(i=0, b=0, f1=0, sl2=0; iif(s2[i]=='.')// 除小數點並進行相應記錄
else
}else
if(f1==1)// 記錄小數字數}}
s1.erase(0, l1);
s2.erase(0, l2);
if(f==1)
// 除處理後的大數的首0--「0.001->001」情況
st = st1;
l1 = st.size();
st1.erase(0, l1);
for(i=0, b=0; ist = st2;
l2 = st.size();
st2.erase(0, l2);
for(i=0, b=0; ist.erase(0, l2);
l1 = st1.size();
l2 = st2.size();
n = new int[l2];
n1 = new int[l2+1];
n2 = new int[l2];
for(i=0, f=0; iif(f==1)// 添小數點
t2 = st2[i] - '0';
n[i] = t1;
n2[i] = t2;
}for(i=l2, f2=0; in2[j])
if(n[j]if(f2==0)// 已經正常移位使f2為0
if(f==1)
++i;
}f2 = 1;// 防止上次正常移位使f2為0導致這次b為1時需要使商為0
for(k=9, f1=0; k>0; --k)// 試除並確定商
else// 無增加位情況
for(j=0; jt2 = n2[j];
if(t1>100)// 已經確定被除數取數部分大於除數乘k值則直接運算
else
else}}
if(j==l2)// 整除則不考慮精度
}itoa(k, &ct, 10);// 整型數字轉換為字元型數字
st += ct;// 商值記錄
for(j=l2-1; j>=0; --j)// 處理除數乘k值結果
}if(b==1)// 有增加位情況
else
for(j=l2-1, f1=0; j>=0; --j, --t)// 被除數取數部分減除數乘k的值
else
else
if(k==l2)// 整除
if(f==1)// 商上小數點
f2 = 0;// 有移位則使f2為以便被除數取數部分小於除數需補數時對商上0}}
if(k==l2)// 整除
}
高精度除法 大數除法
問題描述 給出兩個正整數,計算a b的值,保證a和b的位數不超過500位。輸入描述 輸入兩個用空格隔開的正整數。輸出描述 輸出a b的值。樣例輸入 500 2 樣例輸出 250 解題思路 大數除法的實現有兩種方式 1 用a b,迴圈,直到a 計算過程 擴充套件b的位數 a.length b.lent...
大數運算 除法
include include include include include using namespace std 大數運算最關鍵的是用進製理解,就是把乙個陣列元素表示的最大值作為乙個進製 如此,最容易的大數運算也是最耗費空間的就是乙個元素表示一位數字,即用十進位制表示 還有一種折中的方案,是乙...
C 大數除法
提供一種有關 c 大數除法的思路。用二分的方式,尋找答案。用 mid 被除數,若大於除數,則縮小右端點,若小於除數,則縮小左端點。最後可以得到 答案。本人採取這個方法,得到的數字比答案大一,所以要減去一 最後要注意的是,mid 被除數 有越界的可能。我設定了,如果越界,則返回0,然後在 二分的迴圈 ...