算法学习02-基础算法02:高精度(c++)

算法学习02:高精度(c++)



前言

在这里插入图片描述



要记忆的模版:

//C = A + B
//Ai + Bi + t
vector<int> add(vector<int> &A, vector<int> &B)
{
	vector<int> C;
	
	int t = 0;
	for(int i = 0; i < A.size() || i < B.size(); i++) {
		if(i < A.size()) t += A[i];
		if(i < B.size()) t += B[i];
		C.push_back(t % 10);
		t = t / 10;
	}
	return C;
 } 

//C = A - B
//(保证A大于B)Ai - Bi - t
vector<int> sub(vector<int> &A, vector<int> &B)
{
	vector<int> C;
	
	int t = 0;
	for(int i = 0; i < A.size(); i++)
	{
		t = A[i] - t;
		if(i < B.size()) t = t - B[i];
		C.push_back((t + 10) % 10);//注意3:大于0,结果不变,小于0,结果要+10
		if(t < 0) t = 1;
		else t = 0; 
	}
	
	while(C.size() > 1 && C.back() == 0) C.pop_back();
	return C;
 } 

//C = A * B
//Ai * b + t
vector<int> mul(vector<int> &A, int b)
{
	vector<int> C;
	
	int t = 0;
	for(int i = 0; i < A.size() || t; i++)
	{
		//C.push_back((A[i] * b + t) % 10)
		//t = (A[i] * b + t) / 10;
		if(i < A.size()) t += A[i] + b;
		C.push_back(t % 10);
		t = t / 10;
	}
	return C;
 } 

//C = A * B
//r * 10 + Ai
vector<int> div(vector<int> &A, int b, int &r)
{
	vector<int> C;
	r = 0;
	for(int i = A.size() - 1; i >= 0; i--)
	{
		r = r * 10 + A[i];
		C.push_back(r / b);
		r %= b;
	}
	reverse(C.begin(), C.end());//注意1:倒置位置 
	while(C.size() > 1 && C.back() == 0) C.pop_back();//注意2:出去“前导0”。 
	return C;
 } 


提示:以下是本篇文章正文内容:

一、高精度

1.高 + 高

在这里插入图片描述

add函数这里少了:“return C;”



2.高 - 高

在这里插入图片描述



在这里插入图片描述

在这里插入图片描述



3.高 * 低

在这里插入图片描述



纠错:t += A[i] * b

在这里插入图片描述



4.高 / 低

在这里插入图片描述



在这里插入图片描述


总结

提示:这里对文章进行总结:

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lennard-lhz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值