总时间限制: 1000ms 内存限制: 65536kB
- 描述
-
求两个大的正整数相减的差。
输入 - 共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。 输出
- 一行,即所求的差。 样例输入
-
9999999999999999999999999999999999999 9999999999999
样例输出 -
9999999999999999999999990000000000000
大整数的减法和加法其实差不多,下面也附上两种ac代码。
版本一:
#include
#include
int main()
{
char s1[210],s2[210];
int a[210]={0},b[210]={0},i,j=0,k,t=0,l1,l2;
gets(s1);
gets(s2);
l1=strlen(s1);
l2=strlen(s2);
for(i=l1-1;i>=0;i--)
a[j++]=s1[i]-'0';
for(j=0,i=l2-1;i>=0;i--)
b[j++]=s2[i]-'0';
for(i=0;i=0&&a[i]==0;i--);
if(i>=0)
{
for(;i>=0;i--)
printf("%d",a[i]);
}
else
printf("0");
return 0;
}
版本二:
#include
#include
char a[202],b[202];
int c[202],d[202];
int main()
{
int l1,l2,i,k,t;
scanf("%s%s",a,b);
l1=strlen(a),l2=strlen(b);
for(i=0;il2?k=l1:k=l2;
for(i=0;i<=k;i++)
t=c[i]-d[i],t<0?(t+=10,c[i+1]--):t,c[i]=t;
while(!c[k]&&k)k--;
for(;k>=0;k--)
printf("%d",c[k]);
return 0;
}