描述
求两个大的正整数相减的差。
输入
共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
输出
一行,即所求的差。
样例输入
9999999999999999999999999999999999999
9999999999999
样例输出
9999999999999999999999990000000000000
#include <iostream>
#include <cstdio>
#include <cstring>
#define N 200
using namespace std;
int main()
{
char a[N],b[N];
int len_a,len_b,ans[N],t,i,j,jiewei;
gets(a);
gets(b);
if(strcmp(a,b)==0)
{
cout<<0; //减数和被减数相同则直接输出0
}else
{
len_a = strlen(a);
len_b = strlen(b);
jiewei = 0;
for(i=len_b-1,j=len_a-1;i>=0;i--,j--)
{
t = a[j]-b[i]-jiewei;
if(t>0)
{
a[j] = char('0'+t);//注意赋值的时候一定要转换成字符
jiewei = 0;
}else if(t<0)
{
a[j] = char('0'+t+10);
jiewei = 1;
}else
{
a[j] = '0';
jiewei = 0;
}
}
if(jiewei)
{
a[j] = char(a[j]-1);
}
int flag = 1;
for(int i=0;i<len_a;i++)
{
if(a[i]=='0' && flag)//去除结果中的前导
{
continue;
}
flag = 0;
cout<<a[i];
}
}
return 0;
}