答案
2025-11-02 21:23:36
发布于:福建
4阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
string s1 , s2;//高精度数值
long long a[101];//s1的转换
long long b[101];//s2的转换
long long c[101];//高精度a+b的和
//把字符串变成数字
void strtoint(string src , long long des[]) {
for (int i = 0 ; i < src.length() ; i++) {
des [src.length() - i] = src[i] - '0';
}
}
//判断谁大谁小
bool cmpstr(string str1 , string str2) {
if (str1.length() != str2.length()) {
return str1.length() >= str2.length();
} else {
return str1 >= str2;
}
}
int main( ) {
cin >> s1 >> s2;
//如果小-大,先交换两数位置,输出-
if (cmpstr(s1 , s2) == false) {
swap(s1 , s2);
cout << "-";
}
long long la = s1.length();
long long lb = s2.length();
//把s1和s2转换成数字
strtoint(s1 , a);
strtoint(s2 , b);
//计算c数组的长度
long long lc = max(la , lb);
for (int i = 1 ; i <= lc ; i++) {
if (a[i] < b[i]) {//不够减去
a[i + 1]--;//向高位借位
a[i] += 10;//借一当十
}
c[i] = a[i] - b[i];
}
//老套路:去掉前导0
while(c[lc] == 0 && lc > 1){
lc--;
}
//倒序输出
for (int i = lc ; i >= 1 ; i--) {
cout << c[i];
}
return 0;
}
这里空空如也


有帮助,赞一个