高精度加法想必大家都会了吧!
那我们来学习一下高精度减法
#include <bits/stdc++.h>
using namespace std;
int a1[1001] , a2[1001] , a3[1001];
string s1,s2;
bool cmp(string num1, string num2){
if(num1.size() != num2.size()){
return num1.size() < num2.size();
}
return num1 < num2;
}
int main(){
int flag = 0 , len1 , len2;
cin >> s1 >> s2;
flag = cmp(s1 , s2);
if(flag == 1){
swap(s1 , s2);
}
len1 = s1.size();
len2 = s2.size();
for(int i = 0; i < len1; i++){
a1[i] = s1[len1 - i - 1] - '0';
}
for(int i = 0; i < len2; i++){
a2[i] = s2[len2 - 1 - i] - '0';
}
//3减法
for(int i = 0; i < len1; i++){
a3[i] = a1[i] - a2[i];
}
//4处理退位
for(int i = 0; i < len1; i++){
if(a3[i] < 0){
a3[i] += 10;
a3[i + 1] -=1;//向高位借1
}
}
//处理前置0
while(len1 > 1 && a3[len1 - 1] == 0){
len1--;
}
if(flag == 1){
cout << '-';
}
for(int i = 0; i < len1; i++){
cout << a3[i];
}
return 0;
}
输入:
输入:
66666
65777
输出:
998