首页 > 其他分享 >高精度加法心得体会

高精度加法心得体会

时间:2024-08-31 20:22:28浏览次数:5  
标签:语句 心得体会 高精度 int -- 计算 加法 向量

       高精度加法是基于我们计算加法而设计的一种算法,在C++中我们创建的整数位数不能过大,当我们有大整数计算需求时,就要用到这个算法。

 

#include<iostream>
#include<vector>
using namespace std;

vector<int> add(vector<int>&A,vector<int>&B)//主体函数的功能是S
{
	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()条件句 不是for()
		if(i<B.size())t+=B[i];
		
		C.push_back(t%10);
		t/=10;
		
		
		
	}
	if(t)C.push_back(1);
	return C;
	
	
	
	
}

       这是高精度加法的功能函数,在这里我们需要传进两个向量类,向量类的作用其实是为了更方便地处理数据,用数组也没问题。

这个函数模仿了我们人类计算加法的思路,即逢十进一。

for(int i=0;i<A.size()||i<B.size();i++)
	{
		if(i<A.size())t+=A[i];//这里是if()条件句 不是for()
		if(i<B.size())t+=B[i];
		
		C.push_back(t%10);
		t/=10;
		
		
		
	}

       这段代码中for循环同时涉及到A,B两个向量类,if语句也是如此,这是为了防止两个大整数的位数不同而导致出错,比如1234+123,如果没有for 和 if 语句,1234中的1无法参与运算。

C.push_back语句的作用是把A[i]+B[i]的结果落下来,比如1234+123,计算的时候我们是先算4+3=7,这样会把7落下来,这条语句的作用就是如此。

t/=10的作用是以防计算出现进一的情况,比如15+17,算5+7=12,计算十位1+1的时候要加上个位计算进上来的1,这条语句的作用就是如此。

int main()
{
	string a,b;
	cin>>a>>b;
	vector<int>A,B;
	
	for(int i=a.size()-1;i>=0;i--)A.push_back(a[i]-'0');
	for(int i=b.size()-1;i>=0;i--)B.push_back(b[i]-'0');
	
	auto C=add(A,B);
	
	for(int i=C.size()-1;i>=0;i--)cout<<C[i];
	
	
	
	
}

        这是算法主函数部分,主函数做的工作主要是建立并初始化两个向量类用于计算,建立向量类时,是将每个字符串从最后一位开始往外拿,这样我们就可以从个位开始做加法了。

注意最后输出的时候也是从后往前输出。

标签:语句,心得体会,高精度,int,--,计算,加法,向量
From: https://blog.csdn.net/Lyh0410/article/details/141719194

相关文章

  • 一种基于YOLOv10的高精度光伏板缺陷检测算法(原创自研),适用缺陷检测场景、小缺陷场景
     ......
  • [Python手撕]大数加法
    num1=input()num2=input()defcompare(num1,num2):foriinrange(len(num1)):ifnum1[i]>num2[i]:return0elifnum1[i]<num2[i]:return1return2#解析符号flag1=0flag2=0ifnum1[0]=="-......
  • 高精度,强扭矩,舵机让每一次转动都精准无误!
    深入探索科技的前沿,我们不得不聚焦于一款革新性的动力核心——高精度、强扭矩的舵机。这项技术杰作,以其精湛的工艺与尖端的技术,重新定义了精密控制的新标准,无论是翱翔天际的航模,还是穿梭于复杂任务中的机器人手臂,都因它而焕发出前所未有的活力与精准。核心技术解析:高精度舵机......
  • 软硬件全开源智能手表,可全面高精度采集生命体征数据,进行健康检测。(HealthyPi Move)
    HealthyPiMove是一款开放式硬件设备,可让您高精度地跟踪所有生命体征。它不仅仅是另一款带有心率监测器的智能手表,它还是手腕上的完整生命体征监测和记录设备,可以测量心电图(ECG)、光电容积脉搏波(PPG)、SpO₂、血压(基于手指)、EDA/GSR、心率变异性(HRV)、呼吸频率,甚至体温......
  • 信息学奥赛初赛天天练-76-NOIP2015普及组-基础题1-计算机存储、硬件系统、操作系统、
    NOIP2016普及组基础题111MB等于()A10000字节B1024字节C1000×1000字节D1024×1024字节2在PC机中,PENTIUM(奔腾)、酷睿、赛扬等是指()A生产厂家名称B硬盘的型号CCPU的型号D显示器的型号3操作系统的作用是()A把源程序译成目......
  • 自动驾驶轻地图 、无地图、高精度地图
    自动驾驶中的轻地图、无地图和高精度地图各有不同的设计原则和应用特点:1.**轻地图**:通常包含基本的道路信息,如车道线和标志。设计原则是平衡地图精度与存储和计算需求。流程包括生成、更新和维护地图数据。原理是用最简化的数据提供足够的导航支持。测试时主要关注地图数据的......
  • 高精度
    #include<cstring>#include<string>#include<algorithm>#include<cmath>#include<iostream>#include<vector>usingnamespacestd;booloperator<(vector<int>a,vector<int>b){if(a.size()!=b.size(......
  • c++高精度细剖
    深入剖析C++中的高精度计算是一个广泛且深入的主题,它涵盖了多种技术和策略,用于处理超过标准整数或浮点数类型能表示范围的数值。在这里,我将提供一个概括性的框架,涵盖高精度计算的基本概念、常见方法、实现细节以及可能的应用场景,但请注意,由于篇幅限制,这里无法直接达到“十万字......
  • 排序算法 排序性能测试代码(随机数调整,高精度时间) - C++
    目录测试工具源码testsort测试工具C++11标准库<chrono>中高精度计时器,时间精度可以达到1纳秒.C++11标准库<random>中随机数生成器,可以实现各类随机数,本测试主要用于实现9成随机数下排序性能源码源码我拆分成两部分,一部分为测试,一部分为sort源码.合并一起使用test......
  • 信息学奥赛初赛天天练-70-NOIP2016普及组-基础题1-二进制、二进制状态表示、二进制加
    NOIP2016普及组基础题11以下不是微软公司出品的软件是()APowerpointBWordCExcelDAcrobatReader2如果256种颜色用二进制编码来表示,至少需要()位A6B7C8D93以下不属于无线通信技术的是()A蓝牙BWifiCGPRSD以太网7......