有理数的加法运算法则:
(1) 同号两数相加,取相同的符号,再计算两数绝对值之和;
(2) 异号两数相加,取绝对值较大数的符号,再用较大的绝对值减去较小的绝对值。
依题意,高精度如下(无注释,可拿走使用):
// Author:PanDaoxi
#include <bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int INF = 101;
struct bn{
string s, absn;
int num[INF], len, absLen;
bool neg;
void inp(){
cin >> s;
len = s.size();
neg = (s[0] == '-');
absn = neg ? s.substr(neg) : s;
absLen = absn.size();
for(int i=0; i<absLen; i++){
num[i] = absn[absLen-i-1] - '0';
}
return;
}
} a, b;
int c[INF+1];
char cABS(){
if(a.absLen > b.absLen || (a.absLen >= b.absLen && a.absn > b.absn)){
return 'a';
}
else if(a.absn == b.absn){
return '=';
}
else{
return 'b';
}
}
void add(){
for(int i=0; i<max(a.len, b.len)+1; i++){
c[i] += a.num[i] + b.num[i];
c[i+1]