(一)算法笔记
(二)算法的代码
2.1 大数加法的运算
#include<iostream>
#include<vector>
using namespace std;
vector<int> add(vector<int> &a,vector<int> &b){
if(a.size()<b.size()) return add(b,a);//add(a,b)必须a的位数大于b的位数
int t=0;//用来保存进位
vector<int> c;
for(int i=0;i<a.size();i++){
if(i<a.size()) t+=a[i];
if(i<b.size()) t+=b[i];
c.push_back(t%10);//保存当前位
t/=10;//保存向高位的进位
}
if(t) c.push_back(1);//判断最高位是否发生了进位,如果t==1,表示还有一个进位,要补上
return c;
}
int main(){
string A,B;
cin>>A>>B;
vector<int> c;
vector<int> a,b;
//A和B倒着放进int数组,因为有进位,倒着放容易处理
for(int i=A.size()-1;i>=0;i--) a.push_back(A[i]-'0');
for(int i=B.size()-1;i>=0;i--) b.push_back(B[i]-'0');
c=add(a,b);
//因为A和B是倒着放的,所以C也要倒着输出
for(int i=c.size()-1;i>=0;i--) printf("%d",c[i]);
}
2.2大数的减法运算