高精度运算(一)..ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 高精度运算 (一) 类型      数值范围   占字节数 Byte 0 .. 255 1 Word 0 .. 65535 2 Shortint -128 .. 127 1 Integer -32768 .. 32767 2 Longint -2147483648 .. 2147483647 4 Longword 0 .. 4294967295 4 Int64 -9223372036854775808 .. 9223372036854775807 8 QWord 0 .. 18446744073709551615 8 高精度运算涉及到的问题: 1、数据的接收与存储 2、计算结果位数的确定 3、进位、借位处理和商、余数的求法 4、结果的输出:小数点的位置、处理多余的0等 一、高精度加法 题目要求: 输入: 第一行:正整数a 第二行:正整数b ( 1 a , b 10240 ) 输出:a+b的值。 样例输入: 99 999 样例输出: 1098 高精度加法解决的问题: 1、数据的输入 2、输入数据的预处理与存储 3、加法运算时进位的处理 4、结果的输出 1、数据的输入 数据的范围: ( 1 a , b 10240 ) 可以用字符串输入: Var s1,s2:string; Readln(s1); Readln(s2); 2、输入数据的预处理与存储 为了计算方便,一般采用数组存储 Var a , b : array[ 1 .. 241 ] of integer ; 将字符串转换为数组存储。 用a存s1,b存s2。 A[1]存个位,便于以后计算和进位处理 len1:=length(s1); for i:= 1 to len1 do a[i]:=ord(s1[len1+1-i])- 48; len2:=length(s2); for i:= 1 to len2 do b[i]:=ord(s2[len2+1-i])- 48; S1=’3 4 5 2 3 4 5’ ….a[3] a[2] a[1] 3、加法运算时进位的处理 把计算结果存到数组c中: c: array[1..241] of integer; 先计算。 ……a[3] a[2] a[1] ……b[3] b[2] b[1] + ……c[3] c[2] c[1] if len1len2 then len:=len1 else len:=len2; inc(len); 按位加及处理进位: K:=0; for i:=1 to len do begin k:=a[i]+b[i]+k; c[i]:=k mod 10; K:=k div 10 end; 4、结果的输出 if c[len]=0 then dec(len); for i:=len downto 1 do write(c[i]); writeln; 高精度加法的应用 Fibonacci数列   Fibonacci数列的代表问题是由意大利著名数学家Fibonacci于1202年提出的“兔子繁殖问题”(又称“Fibonacci问题”)。   问题的提出:有雌雄一对兔子,假定过两个月后便每个月可繁殖雌雄各一的一对小兔子。问过n个月后共有多少对兔子? 已知:N=1000。 F(i):第i个月共有的兔子对数。 F(1)=1; F(2)=1; f(3)=2; f(4)=3; f(5)=5; f(6)=8; F(i)=f(i-2)+f(i-1) {N=93} var f:array[1..100] of qword; n,i:int

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档