C++高精度减法
高精度减法其实跟加法差不多,首先就是需要逆序存入整数数组,其次就是做运算,最后就是删除前导0逆序输出。
不过在做高精度减法需要考虑一下两个数的关系是有三种的,a>b,a<b a==b;思考全面咱们的程序才能拿满分。
以下是完整程序:
#include<bits/stdc++.h>
using namespace std;
const int maxn=10010;
int a[maxn],b[maxn];
bool compare(string a,string b){if(a.size()<b.size()){return true;}if(a.size()>b.size()){return false;}for(int i=0;i<a.size();i++){if(a[i]>b[i]){return false;}if(a[i]<b[i]){return true;}}return false;
}
int main() {string s1,s2;cin>>s1>>s2;//比较 默认s1>s2if(compare(s1,s2)){swap(s1,s2);printf("-");}int len1=s1.size();int len2=s2.size();for(int i=0;i<len1;i++){a[len1-i]=s1[i]-'0';}for(int i=0;i<len2;i++){b[len2-i]=s2[i]-'0';}for(int i=1;i<=len1;i++){a[i]-=b[i];if(a[i]<0){a[i+1]--;a[i]+=10;}}while(a[len1]==0&&len1>1){len1--;}for(int i=len1;i>=1;i--){cout<<a[i];}return 0;
}