A+B(高精)题目中有说不用考虑负数,所以具体方法如下:
先将两个数用string存,长度比较短的字符串前面补满0;
再用两个数组去存每一位数字
最后再用加法去算
#include<iostream>
#include<cstdio>
#include<string>
#include<cmath>
using namespace std;
int main() {
string a,b;
cin>>a>>b;
long long e = max(a.size(),b.size()),f = a.size(),g = b.size();
for(int i = 1;i <= e - f;i++){
a.insert(0,"0");
}
for(int i = 1;i <= e - g;i++){
b.insert(0,"0");
}
int c[e + 1],d[e + 1];
for(int i = e;i >= 0;i--){
c[i] = 0;
}
for(int i = e;i >= 0;i--){
d[i] = 0;
}
for(int i = 1;i <= e;i++){
c[i] = int(a[i-1]) - 48;
}
for(int i = 1;i <= e;i++){
d[i] = int(b[i - 1]) - 48;
}
for(int i = e;i >= 1;i--){
c[i] = c[i] + d[i];
if(c[i] >= 10){
c[i-1] += 1;
c[i] %= 10;
}
}
for(int i = 0;i <= e;i++){
if(c[i] != 0 or i != 0){
printf("%d",c[i]);
}
}
}