(一)算法笔记

 
 
 
(二)算法的代码
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大数的减法运算



















