高精加法的位数肯定很大,所以按照字符串读入。接着用vector数组把a,b倒着存,倒着存的同时,把字符转换为整形(-'0'就可以)。然后再计算(一位一位的加),最后输出(如果有进位,那先输出进位的值)。代码如下
#include<vector>
#include<iostream>
using namespace std;
int main(){
string a,b;//按字符串读入
cin>>a>>b;
int m=a.size()>b.size()? a.size():b.size();//用m存最大的长度
vector<int> r(m,0), g(m,0);
for(int i=a.size()-1; i>=0; i--){
r[i]=a[a.size()-1-i]-'0';//把a倒着存
}
for(int i=b.size()-1; i>=0; i--){
g[i]=b[b.size()-1-i]-'0';//把b倒着存
}
int c=0;//进位
for(int i=0; i<m; i++){
r[i]=r[i]+g[i]+c;
c=r[i]/10;//若r[i]大于十c就会等于1
r[i]=r[i]%10;//只剩个位
}
if(c==1){//判断最后一次加法有没有进位
cout<<"1";
}
for(int i=r.size()-1; i>=0; i--){//倒着输出
cout<<r[i];
}
cout<<endl;
return 0;
}