当前位置: 首页 > news >正文

算法基础之高精度总结

目录

高精度算法分类

高精度加减乘除的异同点

加和乘

相同点

减和除

相同点

不同点

处理前导0的方式


高精度算法分类

分类:加、减、乘、除

其中加减乘都适用于两个数都是高精度,除法因为除数是高精度的话不好用整除的方法,所以除法时被除数是高精度,除数是整型。

高精度加减乘除的异同点

加和乘

相同点
  1. 需要从低位到高位处理

    for(int i=stra.size()-1;i>=0;i--) c.push_back(stra[i]-'0');
    
  1. 加和乘处理向上进位

    int t=0;
    for(...){t += a[i];c.push_back(t % 10);t /= 10;
    }
    
  2. 可以使用通用模板

    加法

    c[i]+=a[i];
    c[i]+=b[i];
    //然后统一对c进行进位处理
    

乘法

   c[i+j] = a[i]*b[j];//然后统一对c进行进位处理

减和除

相同点
  1. 有可能当前位的数不够,需要借用上一位
不同点
  1. 减法需要从低位到高位处理,除法是从高位到低位处理

  2. 减法每一位都要处理上一位的借位情况,借位要么是0要么是1

    int t=0;
    //注意:a是从低位到高位排序
    for(int i=0;i<a.size();i++){t = a[i]-t;if(i<b.size()) t -= b[i];c.push_back(t % 10);//下一位的借位if(t <0) t=1;else t = 0;}
    
  1. 除法更多的应该是叫凑位,把高位的数*10和低位的数合并,每个位置不需要再单独加减

    int r=0; //余数
    //注意a是从高位到低位排序
    for(int i=0;i<a.size();i++){r = r * 10+a[i];c.push_back(r /b);r = r % b;
    }
    

4.除法处理前导0的情况需要翻转,把高位翻转到末尾

reverse(c.begin(),c.end());

处理前导0的方式

四种运算都一样,只是除法先要翻转数组

while(c.size()>1 && c.back()==0) c.pop_back();

http://www.lryc.cn/news/176903.html

相关文章:

  • oracle TNS Listener 远程投毒漏洞修复
  • 第二章:最新版零基础学习 PYTHON 教程(第一节 - Python 输入/输出–在 Python 中获取输入)
  • react create-react-app v5 从零搭建项目
  • 2023软件测试八股文,涵盖所有面试题
  • 性能压力测试的定义及步骤是什么
  • Selenium自动化中处理鼠标悬停并操作的方法
  • python socket 编程实现猜数字
  • 20个提升效率的JS简写技巧,告别屎山!
  • Pikachu靶场——SSRF 服务端请求伪造
  • Android file
  • 【计算机网络】计网常见面试题总结
  • SpringMVC 学习(七)JSON
  • 重学C++ | std::set 的原理
  • AnV-X6使用及总结
  • Go 围炉札记
  • 数据分析回头看2——重复值检查/元素替换/异常值筛选
  • 什么是OSPF?为什么需要OSPF
  • 轻量级的日志采集组件 Filebeat 讲解与实战操作
  • C# 委托和事件
  • 数据结构与算法之字典: Leetcode 349. 两个数组的交集 (Typescript版)
  • day-56 代码随想录算法训练营(19)动态规划 part 16
  • 蓝桥等考Python组别四级005
  • 【Linux】diff 命令
  • 【51单片机】9-定时器和计数器
  • 2023年海南省职业院校技能大赛(高职组)信息安全管理与评估赛项规程
  • 大模型深挖数据要素价值:算法、算力之后,存储载体价值凸显
  • AI文章,AI文章生成工具
  • mac有必要用清理软件吗?有哪些免费的清理工具
  • React 全栈体系(十八)
  • TCP/UDP