大數除法1

2021-06-16 03:50:39 字數 1420 閱讀 4412

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,然後在 二分的迴圈 ...