减法神童
描述
在科学城里住着一位减法神童,他可以在一秒钟内算出两个数相减的结果。这两个数可不是普通的数字,它们是11位以上的“庞然大物”。为了证明自己神奇的计算能力,减法神童请全城的人都来出题考自己,只要答错一题他就自愿放弃“减法神童”的称号。
你想考考减法神童吗?还是先编写一个程序帮我们算出任意两个11位以上的数相减的精确结果吧。
输入
第1行是被减数A,第2行是减数B(A,B的位数大于11,小于200)。
输出
A-B的结果。
输入样例 1
5894379463257 1245648324567
输出样例 1
4648731138690
代码如下:
#include <bits/stdc++.h>
using namespace std;
int n,i,j,s=1,t,m,a[208],b[208],c[208];
int main() {
string s1,s2;
cin>>s1>>s2;
if(s2.size()>s1.size()||s2.size()==s1.size()&&s2>s1)
{
cout<<"-";
swap(s1,s2);
}
n=s1.size();
m=s2.size();
for(i=1;i<=n;i++) a[i]=s1[n-i]-'0';
for(i=1;i<=m;i++) b[i]=s2[m-i]-'0';
for(i=1;i<=n;i++){
if(a[i]>=b[i]) c[i]=a[i]-b[i];
else {
c[i]=(a[i]+10)-b[i];
a[i+1]--;
}
}
i=n;
while(c[i]==0) i--;
for(;i>=1;i--) cout<<c[i];
return 0;
}