rt,楼主这只蒟蒻写到最后不知道那出了问题。 主诉:像1000−999这样的会出问题,1−2也会 需求:在源代码上改
#include<bits/stdc++.h>
using namespace std;
//#define bug
#define less
int main()
{
string a,b,c="";
cin>>a;
cin>>b;
int lena=a.size(),lenb=b.size();
string stra="",strb="",strc="";
int len=max(lena,lenb)+1;
if(lena<lenb)
for(int i=1;i<=lenb-lena;i++)
a="0"+a;
else
for(int i=1;i<=lena-lenb;i++)
b="0"+b;
a="0"+a;
b="0"+b;
for(int i=len-1;i>=0;i--)
stra+=a[i];
for(int i=len-1;i>=0;i--)
strb+=b[i];
int x=0;
bool flag=0;
if(stra[len-1]<strb[len-1])
flag=1;
#ifdef bug
printf("%s %s\n",stra.c_str(),strb.c_str());
printf("%d\n",len);
printf("%d\n",flag);
#endif
for(int i=0;i<len-1;i++)
{
x=0;
if(stra[i]<strb[i])
x=10,strb[i+1]-1;
int t;
t=((stra[i]+x)-'0')-(strb[i]-'0');
#ifdef bug
printf("%d %d %d\n",t,((stra[i]+x)-'0'),(strb[i]-'0'));
#endif
strc=char(t+'0')+strc;
}
#ifdef less
if(flag)
strc='-'+strc,len++;
#endif
for(int i=len-1;i>=0;i--)
c+=strc[i];
while(len>1 && c[len-1]-48==0)
{
c.erase(len-1,1);
len--;
}
strc="";
for(int i=len-1;i>=0;i--)
strc+=c[i];
printf("%s",strc.c_str());
return 0;
}
话说学术的人是不是越来越少了