高精度减法
#include <bits/stdc++.h> using namespace std; string a,b; bool f(){ if(a.size()>b.size()){ return true; }else{ for(int i = 0;i<a.size();i++){ if(b[i]>a[i]){ return false; } } } return true; } int main() { cin>>a>>b; if(!f()){ string a1 = a; a = b; b = a1; cout<<"-"; } vector<int> x,y,sum; for(int i = a.size()-1;i>=0;i--){ x.push_back(a[i]-'0'); } for(int i = b.size()-1;i>=0;i--){ y.push_back(b[i]-'0'); } for(int i = 0;i<a.size();i++){ if(i>=y.size()){ y.push_back(0); } if(x[i]<y[i]){ x[i] += 10; x[i+1] -= 1; } sum.push_back(x[i]-y[i]); } bool have = true; for(int i = sum.size()-1;i>=0;i--){ if(sum[i]==0 && have && i>=1){ continue; } have = false; cout<<sum[i]; } return 0; }#include <bits/stdc++.h> using namespace std; string a,b; bool f(){ if(a.size()>b.size()){ return true; }else{ for(int i = 0;i<a.size();i++){ if(b[i]>a[i]){ return false; } } } return true; } int main() { cin>>a>>b; if(!f()){ string a1 = a; a = b; b = a1; cout<<"-"; } vector<int> x,y,sum; for(int i = a.size()-1;i>=0;i--){ x.push_back(a[i]-'0'); } for(int i = b.size()-1;i>=0;i--){ y.push_back(b[i]-'0'); } for(int i = 0;i<a.size();i++){ if(i>=y.size()){ y.push_back(0); } if(x[i]<y[i]){ x[i] += 10; x[i+1] -= 1; } sum.push_back(x[i]-y[i]); } bool have = true; for(int i = sum.size()-1;i>=0;i--){ if(sum[i]==0 && have && i>=1){ continue; } have = false; cout<<sum[i]; } return 0; }