- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
百度Pascal 吧公开培训教材-Pascal 培训课程算法讲义-第二讲
第二讲 预备算法
一、高精度算法
高精度,在OI 中是极为常见的一种运算极大数的算法。
高精度运算,是指参与运算的数(加数,减数,因子……)范围
大大超出了标准数据类型(longint 2^31,int64 2^63 等)能表示的范
围的运算。例如,求两个200 位的数的和。
这时,就要用到高精度算法了。
首先让我们来回忆一下小学时学习
的加减乘竖式,如图
高精度运算的原理就是以数组一位一位的储存两个操作数,模拟
各种竖式,最后得出用数组储存的结果数。
Part1.基础高精度
首先是高精度加法
其中a,b 是字符串类型的读入数,后接两个for 把他们转成数组
第1 页,共25 页
百度Pascal 吧公开培训教材-Pascal 培训课程算法讲义-第二讲
abn 和bbn。在数组中储存可以使用顺序或倒序,顺序的话进位的时
候会很难办,所以推荐使用倒序,就像这样
因为是倒序,所以这个数表示的就是3211 。
当然为了模块化我们可以把这个大数数组类型定义成一个新类
型
type bigint=array [0..max] of longint;// max 是可能的最大位数
知道了以上这些,那么高精度加法的基本规则也就很简单了
设c 为结果,a ,b 为操作数 c[i]=a[i]+b[i]
然而并没有这么简单,进位的问题也是需要考虑的
因为是十进制,c 中每一位只有可能是0~9 ,出现超过9 的很明
显需要进位。 Inc(c[i+1],c[i] div 10); c[i]:=c[i] mod 10;
这样就完成了这一位的进位操作:将整 10 送给高位,其余留下
来。 这样我们就得到了c 这一个结果,倒序输出即可。
最后我们还得考虑最高位是否有进位,如最高位进位了那么结果
的长度应该+1
高精度减法和高精度加法的规则是非常相似的
(c[i]=a[i]-b[i],设a 为被减数b 为减数),这里就不再阐述了。
第2 页,共25 页
百度Pascal 吧公开培训教材-Pascal 培训课程算法讲义-第二讲
Ww 与ff 为被减数与减数, L1 为最终结果长度
主要讲一下借位的问题:
当a[i]b[i]时,很明显是不够减的。那么我们就要在a 的上一位
中借出一位 dec(a[i+1]);inc(a[i],10); 这样就够减了,请读者自己思考
为什么。
至于高精度乘法呢,观察一下竖式规律即可得到,a,b 中每两位
都要互相乘,a[i]*b[j]最终是要加到c[i+j-1]这个位。
第3 页,共25 页
百度Pascal 吧公开培训教材-Pascal 培训课程算法讲义-第二讲
这样的话最后就处理一下c 的进位问题,然后输出即可。
c 的长度请读者自己思考。
高精度除法难度不大,却较为复杂,鉴于其编写调试均需很长时
间,在竞赛范围不可能出现,故这里不做详细讨论。有兴趣的同学可
以自己试试编写。
Part2.时间复杂度分析
加法减法自然就是O(len); 乘法O(lena*lenb)
Div 和mod 也是特别慢的
假如有两个1 万位的大数相乘,时间就要接近1s,这么大的
时间开销对于一般题目来说是无法承受的,so 时间超限。
所以我们就要对他们做上一些优化
Part3.压位
用数组储存高精度数,一个能存9 位数的longint 只存一位
数是不是有点浪费呢? 现在我们就让longint 存下4 位数。
(即把longint 当成一个10000进制数)
如果存5 位的话就有可能会215 爆掉,请读者自己
您可能关注的文档
- 蛋白质结构比对_附件.pdf
- 长期不同耕作措施对土壤团聚体特征和微生物多样性的影响_李景.pdf
- 事务处理系统概论.ppt
- 防火窗例行检验与确认检验控制程序.doc
- 企业战略、人力资源管理系统及企业绩效的关系研究.doc
- 软件质量和其量化评价方法.pdf
- 微型计算机接口技术剖析.ppt
- 校园二手交易系统-需求规格说明书资料.docx
- 第五章 北方工业大学离散数学期末试卷(B).pdf
- 第七章 主板前置音频线接法几例http.doc
- 2-红河州建筑施工安全生产标准化工地复核评分表(2022年修改版).docx
- 6.锡通项目2018年下半年工作会汇报材料(2018.7.9).docx
- 2018道路工程知识点汇总(新版).docx
- 附件3:月度生产例会安全汇报资料-站台门项目部.docx
- 附件2:广东建工集团2018年度科技成果汇总表.DOC
- 马武停车区、三汇停车区停车位管理系统,0#台账缺量.doc
- 攀成钢委办发〔2015〕19号(党风廉政建设责任考核与追究办法).doc
- 1-红河州建筑工程质量管理标准化复核评分表(2022年修改版).docx
- 中交第三公路工程局第四工程分公司项目经济合同结算管理办法(修订).doc
- 厂站安全操作规程汇编.doc
文档评论(0)