最近突然想起以前刷題遇到了高精度的練習,覺得很有必要總結一下,於是重新將加減乘除寫了一遍,高精度因為位數的限制,輸入必須用字元陣列,中間進行轉換,具體的加減乘除直接上**。
減法:先比較倆個陣列的大小,陣列大的減小的就不需要操作,小的減大的變為大的減小的,同時在角標為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即可,如...