描述
求两个大的正整数相减的差。
输入
共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
输出
一行,即所求的差。
#include<stdio.h>
#include<string.h>
int main()
{
char ac[300],bc[300];
int a[300],b[300];
int flag=0;
int la,lb;
gets(ac);
gets(bc);
la=strlen(ac);
lb=strlen(bc);
for(int i=0;i<la;i++)
{
a[i]=ac[i]-'0';
}
for(int i=0;i<lb;i++)
{
b[i]=bc[i]-'0';
}
//录入数据
int lenb=lb,lena=la;
while(lenb>=0)
{
if(b[lenb]>a[lena]) //如果b比a大,则向前借位
{
a[lena-1]--;
a[lena]+=10;
}
a[lena]=a[lena]-b[lenb];
lena--;
lenb--;
}
flag=1;
for(int i=0;i<la;i++)
{
if(a[i]!=0)
{
flag=1;
}
if(flag==1)
{
printf("%d",a[i]);
}
} //利用flag,筛掉前面的0,保留中间的0
} //注:如果用字符录入,可能会报错.