AcWing 792. 高精度减法
原题链接
简单
作者:
橙柚哥哥
,
2024-10-20 21:33:40
,
所有人可见
,
阅读 2
求赞!
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+10;
string s1,s2;
vector<ll> a,b,c;
bool cmp(vector<ll> a,vector<ll> b) {
if(a.size()!=b.size()) return a.size()<b.size();
for(ll i=a.size()-1; i>=0; --i) if(a[i]!=b[i]) return a[i]<b[i];
return 0;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>s1>>s2;
for(ll i=s1.size()-1; i>=0; --i) a.push_back(s1[i]-'0');
for(ll i=s2.size()-1; i>=0; --i) b.push_back(s2[i]-'0');
if(cmp(a,b)) cout<<"-",swap(a,b);
for(ll i=0,t=0; i<a.size(); ++i) {
t=a[i]-t;
if(i<b.size()) t-=b[i];
c.push_back((t+10)%10);
if(t<0) t=1;
else t=0;
}
while(c.size()>1 && !c.back()) c.pop_back();
for(ll i=c.size()-1; i>=0; --i) cout<<c[i];
return 0;
}