信息学奥赛一本通:1169:大整数减法

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值