高精度 減- 高精度

王ys發表於2024-06-07
#include<iostream>
#include<vector>
using namespace std;
int main(){
    vector<int> a,b;
    string m,n;
    cin>>m>>n;
    for(int i=m.size()-1;i>=0;i--){
        a.push_back(m[i]-'0');
    }
    for(int i=n.size()-1;i>=0;i--){
        b.push_back(n[i]-'0');
    }
    vector<int> c(a.size()+b.size()+2,0);
    int sum=0;
    int x_size=max(a.size(),b.size());
    for(int i=0;i<x_size;i++){
        if(i>=a.size()){
            a.push_back(0);
        }
        if(i>=b.size()){
            b.push_back(0);
        }
        if(b[i]>a[i]){
        	a[i+1]-=1;
        	a[i]+=10;
        	c[i]+=a[i]-b[i];
		}else{
			c[i]+=a[i]-b[i];
		}
    }
    for(int i=0;i<x_size||sum;i++){
        sum+=c[i];
        c[i]=sum%10;
        sum=sum/10;
    }
    while(c.size()>1&&c.back()==0){
        c.pop_back();
    }
    for(int i=c.size()-1;i>=0;i--){
        cout<<c[i];
    }
    return 0;
}

  

相關文章