C 高精度除法運算2(c a b)

2021-09-10 02:47:17 字數 1465 閱讀 4771

一、題目:兩個大整數相除

輸入兩個大於0的大整數a和b,長度不超過100位,將a/b,輸出得到的商和餘數。

二、思路

1.用字串st1和str2儲存兩個大整數的數字串;

2.將數字串從低位往高位存到整型陣列a和b中;

3.取得大整數a和大整數b的位數la和lb;

4.求商和餘數:

(1) 如果la < lb:

商為0,餘數為大整數a;

(2)如果la >= lb:

lc = la - lb + 1;  // 商的位數

用減法模擬除法:求出商的各個數字的值(具體看實現**);

輸出商和餘數。

三、實現程式:

//  title:兩個大整數相除

// created by chanjose on 2019/1/20.

// 測試資料:1234567890 213445

#include #include using namespace std;

const int max = 105;

void enlarge(int p, int q, int bits); // 將陣列p中數字串右移bits位

int compare(int a, int b); // 比較大小

void subtract(int a, int b); // 兩個大整數相減

void print(int a); // 輸出

int main(int argc, const char * ar**)

else

}// 去掉高位多餘的0,同時修正c的位數

while(c[0] > 0 && c[c[0]] == 0)

c[0]--;

// 輸出商和餘數

print(c);

cout << " "; // 空格接著輸出餘數

print(a);

cout << endl;}}

return 0;

}// 將陣列p中數字串右移bits位

void enlarge(int p, int q, int bits)

// 比較大小:如a>b,返回1,相等返回0,否則返回-1

int compare(int a, int b)

return 0; // 兩數相等

}// 兩個大整數相減:a >= b

void subtract(int a, int b)

a[i] = a[i] - b[i];

}while(a[0] > 0 && a[a[0]] == 0) // 去掉高位多餘的0,同時修正a的位數

a[0]--;

}}// 輸出

void print(int a)

測試結果:

C 高精度運算

高精度加法vector int add vector int a,vector int b if t c.push back 1 return c 高精度減法 判斷a b 的大小,保證函式裡面是大的減小的 bool cmp vector int a,vector int b vector int a...

高精度除法 c語言實現

一定要注意高精度除法的實現是需要注意在對求解的陣列的獲取是,是從高位先得到數的,這個過程要模擬真正除法的過程,所以最後這個陣列的長度,必須在進行處理高位的0的時候就提前賦予,不然會出問題,此題還算出了r即是餘數 include includeusing namespace std 減法還需要判斷大小...

高精度運算模版C語言

include include include include define maxx 100 using namespace std 高精度加法 void add char s1,char s2 b maxx 10 int l1 strlen s1 int l2 strlen s2 for i l...