1.6编程基础之一维数组 11.大整数减法
描述
求两个大的正整数相减的差。
输入共2行,第1行是被减数a,第2行是减数b(a> b)。每个大整数不超过200位,不会有多余的前导零。输出一行,即所求的差。样例输入
9999999999999999999999999999999999999
9999999999999
样例输出
9999999999999999999999990000000000000
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,str1,str2,k=0;
int a1[255],a2[255],a3[255];
char c1[255],c2[255];
for(i=0; i<255; i++)
{
a1[i]=0;
a2[i]=0;
}
scanf("%s",c1);
scanf("%s",c2);
str1=strlen(c1);
str2=strlen(c2);
j=0;
for(i=str1-1; i>=0; i--)
a1[j++]=c1[i]-'0';
j=0;
for(i=str2-1; i>=0; i--)
a2[j++]=c2[i]-'0';
for(i=0; i<255; i++)
{
a1[i]-=a2[i];
if(a1[i]<0)
{
a1[i]+=10;
a1[i+1]--;
}
}
j=0;
for(i=254; i>=0; i--)
a3[j++]=a1[i];
for(i=0; i<255; i++)
{
if(a3[i]!=0) k=1;
if(k==1) printf("%d",a3[i]);
}
if(k==0) printf("0");
printf("\n");
return 0;
}