#include<iostream>
#include<cstring>
using namespace std;
int a[10100]={0},b[10100]={0},c[10100]={0},lena,lenb,lenc;
char ch1[10100],ch2[10100],tmp[10100];
bool flag=0;
void sub(int a[],int b[]){
lenc=1;
while(lenc<=lena||lenc<=lenb){
if(a[lenc]<b[lenc]){
a[lenc]+=10;
a[lenc+1]--;
}
c[lenc]=a[lenc]-b[lenc];
lenc++;
}
while(c[lenc]==0&&lenc>1)
lenc--;
return;
}
int main(){
cin>>ch1>>ch2;
lena=strlen(ch1);
lenb=strlen(ch2);
if(lena<lenb||(lena==lenb&&strcmp(ch1,ch2)<0)){
strcpy(tmp,ch1);
strcpy(ch1,ch2);
strcpy(ch2,tmp);
cout<<"-";
}
for(int i=0;i<=lena-1;i++)
a[lena-i]=ch1[i]-'0';
for(int i=0;i<=lenb-1;i++)
b[lenb-i]=ch2[i]-'0';
sub(a,b);
for(int i=lenc;i>=1;i--)
cout<<c[i];
cout<<endl;
return 0;
}
问题是位数不相同的数得负数会输出奇怪的东西,
比如输入
8
10
输出-249???
不知道怎么改。