【题目描述】
求两个大的正整数相减的差。
【输入】
共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
【输出】
一行,即所求的差。
【输入样例】
9999999999999999999999999999999999999 9999999999999
【输出样例】
9999999999999999999999990000000000000
算法核心:
if(a[i]<b[i]){
a[i+1]--;
a[i]+=10;
}
c[i]=a[i]-b[i];
源代码:
#include<bits/stdc++.h>
using namespace std;
char s1[201],s2[201];
int a[201],b[201],c[201];
int main(){
int lena,lenb,lenc;
memset(c,0,sizeof(c));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
scanf("%s",s1);
scanf("%s",s2);
lena=strlen(s1);
lenb=strlen(s2);
lenc=max(lena,lenb);
for(int i=0;i<lena;i++){
a[lena-i]=s1[i]-'0';
}
for(int i=0;i<lenb;i++){
b[lenb-i]=s2[i]-'0';
}
for(int i=1;i<=lenc;i++){
if(a[i]<b[i]){
a[i+1]--;
a[i]+=10;
}
c[i]=a[i]-b[i];
}
while(c[lenc]==0 && lenc>1) lenc--;
for(int i=lenc;i>=1;i--){
cout<<c[i];
}
return 0;
}