题目描述
求两个大的正整数相减的差
输入
共两行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位
输出
一行,即所求的差
样例输入
9999999999999999999999999999999999999
9999999999999
样例输出
9999999999999999999999990000000000000
Code:
cpp
#include<bits/stdc++.h>
using namespace std;
int a[100005],b[100005],c[100005];
void jianfa(string sa,string sb){
int alen=sa.size(),blen=sb.size(),jw=0,len;
for(int i=0;i<alen;i++){
a[i]=sa[alen-1-i]-'0';
}
for(int i=0;i<blen;i++){
b[i]=sb[blen-1-i]-'0';
}
len=max(alen,blen);
for(int i=0;i<len;i++){
c[i]=a[i]-b[i]+c[i];
if(c[i]<0){
c[i+1]--;
c[i]=10+c[i];
}
}
while(len>1&&c[len-1]==0)len--;
for(int i=len-1;i>=0;i--){
cout<<c[i];
}
}
int main(){
string sa,sb;
cin>>sa>>sb;
while(1){
if(sa[0]=='0')
sa.erase(0,1);
else
break;
}
while(1){
if(sb[0]=='0')
sb.erase(0,1);
else
break;
}
jianfa(sa,sb);
return 0;
}