[P2142WA数据](https://www.luogu.org/blog/1124219467lq/p2142wa-shuo-ju)
by lin_god @ 2019-02-02 15:57:34
你没有判断当m==n的时候a<b的情况
所以你的程序输入102 103会输出999
by 花园Serena @ 2019-02-02 16:30:38
@[Llinqi麒](/space/show?uid=102390)
by 花园Serena @ 2019-02-02 16:32:19
加一个这个就行了
```
else if(n==m){
long long i=0;
while(x[i]>=y[i]&&i<n) i++;
if(i!=n){
f=true;
for(i=0; i<m; i++) swap(x[i],y[i]);
}
}
```
by 花园Serena @ 2019-02-02 16:38:00
谢谢大佬
by lin_god @ 2019-02-04 11:14:41
可是好像还是不行啊
是这样改的吗
```cpp
#include<bits/stdc++.h>
using namespace std;
char a[100100],b[100100];
long long x[100100],y[100100],v[100100];
int main()
{
cin>>a>>b;
long long n,m;
bool f=false,l=false;
n=strlen(a);
m=strlen(b);
for(long long i=0; i<n/2; i++)
swap(a[i],a[n-1-i]);
for(long long i=0; i<m/2; i++)
swap(b[i],b[m-1-i]);
for(long long i=0; i<n; i++)
x[i]=a[i]-'0';
for(long long i=0; i<m; i++)
y[i]=b[i]-'0';
if(m>n)
{
for(long long i=0; i<m; i++)
swap(x[i],y[i]);
f=true;
}
else if(n>m)
swap(n,m);
else
{
long long i=0;
while(x[i]>=y[i]&&i<n)
i++;
if(i!=n)
{
f=true;
for(i=0; i<m; i++)
swap(x[i],y[i]);
}
}
for(long long i=0; i<m; i++)
v[i]=x[i]-y[i];
for(long long i=0; i<m; i++)
if(v[i]<0)
{
v[i]=10+v[i];
v[i+1]--;
}
if(f==true)
cout<<"-";
for(long long i=m-1; i>=0; i--)
{
if(l==false)
if(v[i]!=0)
{
l=true;
cout<<v[i];
continue;
}
if(l==true)
cout<<v[i];
}
return 0;
}
```
by lin_god @ 2019-02-04 11:18:31
@[Van♂様年华](/space/show?uid=86973)
by lin_god @ 2019-02-04 11:19:24
@[Llinqi麒](/space/show?uid=102390) 并不是改成else,而是直接加上就好了,好好理解一下吧...当长度相等时前一个数小于后一个数
by 花园Serena @ 2019-02-04 14:05:29
```
#include<bits/stdc++.h>
using namespace std;
char a[100100],b[100100];
long long x[100100],y[100100],v[100100];
int main()
{
cin>>a>>b;
long long n,m;
bool f=false,l=false;
n=strlen(a);
m=strlen(b);
for(long long i=0; i<n/2; i++)
swap(a[i],a[n-1-i]);
for(long long i=0; i<m/2; i++)
swap(b[i],b[m-1-i]);
for(long long i=0; i<n; i++)
x[i]=a[i]-'0';
for(long long i=0; i<m; i++)
y[i]=b[i]-'0';
if(m>n)
{
for(long long i=0; i<m; i++)
swap(x[i],y[i]);
f=true;
}
if(n==m){
long long i=0;
while(x[i]>=y[i]&&i<n) i++;
if(i!=n){
f=true;
for(i=0; i<m; i++) swap(x[i],y[i]);
}
}
if(n>m)
swap(n,m);
for(long long i=0; i<m; i++)
v[i]=x[i]-y[i];
for(long long i=0; i<m; i++)
if(v[i]<0)
{
v[i]=10+v[i];
v[i+1]--;
}
if(f==true)
cout<<"-";
for(long long i=m-1; i>=0; i--)
{
if(l==false)
if(v[i]!=0)
{
l=true;
cout<<v[i];
continue;
}
if(l==true)
cout<<v[i];
}
return 0;
}
```
by 花园Serena @ 2019-02-04 14:06:53
@[Van♂様年华](/space/show?uid=86973) ……
可是……还是不行啊。
第6个点不行
卡着90分
用你的代码也不行……
怎么办……
by lin_god @ 2019-02-05 15:29:01