@[yinzifan](/user/996790) 把
```cpp
for(int i=0;i<la;i++){
a[i]=s1[la-i]-'0';
}
for(int i=0;i<lb;i++){
a[i]=s1[la-i]-'0';
}
```
改成
```cpp
for(int i=1;i<=la;i++){
a[i]=s1[la-i]-'0';
}
for(int i=1;i<=lb;i++){
b[i]=s2[lb-i]-'0';
}
```
by __PRO__ @ 2024-01-29 09:25:37
还是错。。。
by yinzifan @ 2024-01-29 09:28:47
@[yinzifan](/user/996790) 这样就行了
``` c++
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
string s1,s2;
int a[10100],b[10100],la,lb,lc;
int main(){
cin>>s1>>s2;
la=s1.size();
lb=s2.size();
if(la<lb||(la==lb&&s1<s2)){
swap(s1,s2);
swap(la,lb);
// string s3;
// s3=s1;
// s1=s2;
// s2=s3;
// lc=la;
// la=lb;
// lb=lc;
cout<<"-";
}
else if(s1==s2){
cout<<0;
return 0;
}
for(int i=0;i<la;i++){
a[i]=s1[la-i-1]-'0';
// cout<<a[i];
}
for(int i=0;i<lb;i++){
b[i]=s2[lb-i-1]-'0';
}
for(int i=0;i<=la;i++){
if(a[i]<b[i]){
a[i+1]--;
a[i]+=10;
}
a[i]=a[i]-b[i];
}
while(a[la]==0&&la>0){
la--;
}
// cout<<la<<endl;
for(int i=la;i>=0;i--){
cout<<a[i];
}
return 0;
}
```
by pigeonteam @ 2024-01-29 10:03:19
你在创建高精度数组的时候用 $0$ 为初始下标,但计算的时候用 $1$ 为初始下标了。
by pigeonteam @ 2024-01-29 10:04:46
@[pigeonteam](/user/1042306) thank you
by yinzifan @ 2024-01-29 10:09:57