1.【题目描述】
【题目描述】
求两个大的正整数相减的差。
【输入】
共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
【输出】
一行,即所求的差。
【输入样例】
9999999999999999999999999999999999999
9999999999999
【输出样例】
9999999999999999999999990000000000000
2.【代码】
#include<bits/stdc++.h>
using namespace std;
char al[202],bl[202],cl[202];
int a[202],b[202],c[202],lena,lenb,lenc,i;
int main()
{
gets(al);
gets(bl);
if(strlen(al)<strlen(bl)||strlen(al)==strlen(bl)&&strcmp(al,bl)<0)
//判断两个数的大小,长度相同判断大小 ,前一个数小结果为负数
{
swap(al,bl);//交换两个数,用大的数减去小的数
cout<<"-";//小的数减大的数结果为负数
}
lena=strlen(al);//取交换后的长度
lenb=strlen(bl);
for(i=0;i<=lena-1;i++)
a[lena-i]=al[i]-48;//存放入数组
for(i=0;i<=lenb-1;i++)
b[lenb-i]=bl[i]-48;
i=1;
while(i<=lena||i<lenb)
{
if(a[i]<b[i])
{
a[i]+=10;//借位
a[i+1]--;//借位后-1
}
c[i]=a[i]-b[i];//求值
i++;
}
lenc=i;
while((c[lenc]==0)&&(lenc>1))
lenc--;//去除高位上的0
for(i=lenc;i>=1;i--)
cout<<c[i];
return 0;
}
仅供参考!