1169:大整数减法
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 37499 通过数: 21341
【题目描述】
求两个大的正整数相减的差。
【输入】
共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
【输出】
一行,即所求的差。
【输入样例】
9999999999999999999999999999999999999
9999999999999
【输出样例】
9999999999999999999999990000000000000
不会有多余的前导零。相应代码少些
#include<iostream>
#include<cmath>
#include<cstring>
char a[205],b[205],c[205];
using namespace std;
int main()
{
int m,n,i=0,j=0;
scanf("%s\n%s",a,b);
m=strlen(a);//字串长度
n=strlen(b);
for(i=m-1,j=n-1;j>=0;j--,i--)
{
if(a[i]<b[j])//相应数位减不着时,借一位
{
a[i]+=10;
a[i-1]--;//上一位减1
}
a[i]=a[i]-b[j]+'0';//恢复字符
}
i=0;
while(a[i]=='0')i++;//从高位查找是0的字符
if(i>=m-1)//如果大于等于串的长度,是相等了,是0
printf("%d",0);
else
{
for(;i<m;i++)//从不是0的输出字符
putchar(a[i]);
}
return 0;
}