G8|A7871.|题解
2026-07-08 10:50:07
发布于:广东
0阅读
0回复
0点赞
模拟
正文:
#include <bits/stdc++.h>
using namespace std;
string A, B; // 假设 A 和 B 最多 2000000 位
int a[2000010], b[2000010], c[2000010];
int main(){
cin >> A >> B;
if(A.size()<B.size()||(A.size()==B.size()&&A<B))
{
cout << '-';
swap(A,B);
}
reverse(A.begin(), A.end());
reverse(B.begin(), B.end());
for(int i = 0; i < A.size(); i ++ )
a[i]=(int)A[i]-'0';
for(int i = 0; i < B.size(); i ++ )
b[i]=(int)B[i]-'0';
int len = max(A.size(), B.size());
for(int i = 0; i < len; i ++ ){
c[i]=a[i]-b[i]-c[i];
if(c[i]<0)
{
c[i]+=10;
c[i+1] = 1;
}
}
int n = 0;
c[len] = 0;
if(A==B)
{
cout << 0;
return 0;
}
for(int i = (len-1);i>-1;i--)
{
if(c[i]!=0)
break;
n++;
}
for(int i = (len-1-n);i>=0;i--)
cout << c[i];
return 0;
}
这里空空如也

有帮助,赞一个