A-B(高精度)

#include<iostream>
#include<string>

using namespace std;
string sum(string str1,string str2)
{
	
	int ll=str1.length();//计算str1的长度 
	int ss=str2.length();//计算str2的长度 
	if(ll<ss)
	{
		for(int i=0;i<ss-ll;i++)
		str1="0"+str1;
	//如果str1的长度小于str2的长度 在str1前部0
	//例如 123			0000123
//		   3214345	    3214345	    
	}
	else {
	
		for(int i=0;i<ll-ss;i++)
		str2="0"+str2;
	//如果str1的长度大于str2的长度 在str1前部0
	//例如 3214345		3214345
//		   123    	    0000123	
		
	}
	ll=str1.length();//重新计算str1的长度这时str1的长度等于str2的长度 
	string str;
	int t;
	int cf=0;//借位 
	for(int i=ll-1;i>=0;i--)//计算方法从最低位计算 
	{
		if(str1[i]<str2[i]+cf)
        {
            str=char(str1[i]-str2[i]-cf+'0'+10)+str;
            cf=1;
//            当str1[i]<str2[i] 结果<0 所以+10  此时 cf=1借前面一位 
        }
        else
        {
            str=char(str1[i]-str2[i]-cf+'0')+str;
            cf=0;
        }
	}
	str.erase(0,str.find_first_not_of('0'));//去除前面多余的0 
//											例  000213
//												213 
	
return str;
}
int main()
{
	string str1,str2;
	cin>>str1>>str2;
	cout<<sum(str1,str2); 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>