高精度减法

该代码片段展示了如何使用C++进行大整数的减法运算。首先,程序接收两个字符串形式的大整数,然后将它们倒序存储在数组中。接着,模拟竖式减法规则进行计算,处理借位情况,并去除结果中的前导零。最后,倒序输出减法的结果。
摘要由CSDN通过智能技术生成
#include<bits/stdc++.h>
using namespace std;
string a,b;
int a1[20000],b1[20000],ans[20000];
int main()
{
	cin>>a>>b;
	int la=a.size(),lb=b.size();
	if(la<lb || la==lb && a<b)
	{
		cout<<"-";
		swap(la,lb);
		swap(a,b); 
	}
//    1.输入两个大整数
//    考虑负数的问题:判断长度,第一个数长度比第二数长度小或者长度相等 判断字典序大小
//        输出负号 
    for(int i=la-1;i>=0;--i)
    	a1[i]=a[la-i-1]-'0';
    for(int i=lb-1;i>=0;--i)
    	b1[i]=b[lb-i-1]-'0';
//    2.倒序存放到两个数组中
    for(int i=0;i<=la-1;++i)
    {
    	if(a1[i]-b1[i]<0) a1[i]+=10,a1[i+1]--;
    	ans[i]+=a1[i]-b1[i];
	}
//    3.模拟竖式减法(借位)
    while(la>0 && ans[la]==0) la--;
//    4.去除前导0
    for(int i=la;i>=0;--i) cout<<ans[i];
//    5.倒序输出
    return 0;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值