高精度練習之加減乘除

2022-07-20 18:15:13 字數 2362 閱讀 5701

最近突然想起以前刷題遇到了高精度的練習,覺得很有必要總結一下,於是重新將加減乘除寫了一遍,高精度因為位數的限制,輸入必須用字元陣列,中間進行轉換,具體的加減乘除直接上**。

減法:先比較倆個陣列的大小,陣列大的減小的就不需要操作,小的減大的變為大的減小的,同時在角標為0處賦值為-1;

加法:對應位置的數相加,超過10就向前進一位;

乘法:對於陣列b的每乙個數進行單獨相乘,用temp進行儲存,然後將temp加入到sum陣列中。

除法:從起始位置進行比較,大於被除數就直接減去被除數,小於被除數就向後移動一位,再進行比較。

#include#include

#define max 501

using

namespace

std;

intnum1[max];

intnum2[max];

int temp[max * 2-1

];int sum[max * 2-1

];char

ch1[max];

char

ch2[max];

int getfirst(int

a);int min(int a, int b)

void add(int a, int b, int c, int

all_num);

int comp(int a, int

b);void sub(int a, int b, int

c);void sub_d(int a, int b, int

c);void multip(int a, int b, int

c);void division(int a, int b, int

c);int comp2(int a, int start_a, int b, int

start_b);

intmain()

for (int i = 0; i < ch2_num; i++)

//-----------sub------------------

//sub(num1, num2, sum);

//if (sum[0] == -1) cout << "-";

//for (int i = getfirst(sum); i <= 500; i++)

//cout << endl;

//------------add-----------------

//add(num1, num2, sum, 500);

//for (int i = getfirst(sum); i <= 500; i++)

//-----------multip---------------

//multip(num1, num2, sum);

//for (int i = getfirst(sum); i <= 1000; i++)

//-----------division-------------

division(num1, num2, sum);

for (int i = getfirst(sum); i <= 500; i++)

cout

}int getfirst(int

a)void add(int a, int b,int c,int

all_num)

}}int comp(int a, int

b)

return0;

}void sub(int a, int b, intc)}

void sub_d(int a, int b, int

c)

else}}

}void multip(int a, int b, int

c)for (int i = 500; i >= num_b; i--)

}int num_t =getfirst(temp);

int num_c =getfirst(c);

int num_min =min(num_t, num_c);

for (int i = 1000; i >= num_min; i--)}}

}void division(int a, int b, int

c) }

}else

}}int comp2(int a, int start_a, int b, int

start_b)

return1;

}if (start_a return1;

}}

加法減法還是比較方便的,乘除法是轉換為加減法進行計算的。

高精度加減乘除

一。高精度乘法 敲了好久。頭禿 str1,str2是存數字的字串,返回最後的位數,c儲存結果 int highmult char str1,char str2,int c b len2 1 int i,j memset a,0,sizeof a memset b,0,sizeof b memset ...

高精度演算法,加減乘除

高精度演算法的兩個基本問題 高精度數的表示和高精度數的基本運算 1.高精度數的表示 首先我想到的是do while 迴圈逆序存放在陣列之中,但書中用string接受並且將其轉化成數字,存放在陣列之中 int arr 100 string str cin str int len str.length ...

高精度加減乘除模板

include include include using namespace std const int power 1 每次運算的位數為10的power次方,在這裡定義為了方便程式實現 const int base 10 10的power次方。要壓位的時候,只需改power 和 base即可,如...