别别别看
2025-09-02 19:37:07
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int a[10010],b[10010],c[10010];
string cub(string s1,string s2){//高精度加法
string ans = "";
memset(a,0,sizeof a);
memset(b,0,sizeof b);
memset(c,0,sizeof c);
int l1 = s1.size(),l2 = s2.size(),l = max(l1,l2);
for(int i = 0;i < l1;i++) a[i] = s1[l1 - i - 1] - '0
for(int i = 0;i < l2;i++) b[i] = s2[l2 - i - 1] - '0';
if((s1.size() < s2.size()) || (s1.size() == s2.size() && s1 < s2)) {
swap(a,b);
ans += '-';
}
for(int i = 0;i < l;i++){
c[i] += a[i] - b[i];
if(c[i] < 0) {
c[i + 1]--;
c[i] += 10;
}
}
bool flag2 = false;
for(int i = l - 1;i >= 0;i--) {
if(!flag2 && c[i] != 0) flag2 = true;
if(flag2) ans += c[i] + '0';
}
if(ans == "") return "0";
else return ans;
}
int main(){
cin >> s1 >> s2;
cout << cub(s1,s2);
return 0
}
有一点小坑;
全部评论 1
✌耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶
2天前 来自 浙江
0
有帮助,赞一个