Pascal高精度运算(加法篇).ppt_第1页
Pascal高精度运算(加法篇).ppt_第2页
Pascal高精度运算(加法篇).ppt_第3页
Pascal高精度运算(加法篇).ppt_第4页
Pascal高精度运算(加法篇).ppt_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高精度运算加法篇,类型 数值范围 占字节数 Byte 0 255 1 Integer -3276832767; 2 Longint -2147483648 2147483647 4 当数据超过1010以后我们就必须要用到高精度运算,高精度算法入门,高精度运算是指参与运算有数或运算结果远远超过计算机语言中能够表示的数的范围的特殊运算。 例如:编程解决求A+B的值,其中A,B的值=1040 ; 高精度运算的思想就是运用字符串和一维数组的方式模拟运算 口诀就是:用字符串读入数据,转化数据类型,用数组存储数据,并加以运算:,高精度运算涉及到的问题: 1、数据的输入。 2、数据的存储。 3、数据的运算:进位。 4、结果的输出:小数点的位置、处理多余的0等。,高精度加法,题目要求: 输入: 第一行:正整数a。 第二行:正整数b。已知:a和b(10240)。 输出:ab的值。 样例输入: 99 999 样例输出: 1098,、数据的输入。 a和b(10240) 字符串输入: Var s1,s2:string; Readln(s1); Readln(s2);,、数据的存储。 为了计算方便,采用数组存储。 Var a,b,c:array1240 of integer; 将字符串转换为数组存储。 用a存s1,b存s2。 A1存个位,便于以后计算和进位处理,len1:=length(s1); for i:= 1 to len1 do ai:=ord(s1len1+1-i)-48; len2:=length(s2); for i:= 1 to len2 do bi:=ord(s2len2+1-i)-48;,S1=3 4 5 2 3 4 5 a1 a2 a3,、加法运算,注意进位处理。 把计算结果存到数组c中: 先计算。 .a3 a2 a1 b3 b2 b1 + c3 c2 c1,if len1len2 then len:=len1 else len:=len2; for i:=1 to len do ci:=ai+bi;直接先计算 计算后的ci可能=10,怎样处理?,处理进位: for i:=1 to len do begin ci+1:=ci+1+ci div 10; ci:=ci mod 10; end;,、结果的输出:数组c。 if clen+10 then len:=len+1; for i:=len downto 1 do write(ci);,begin readln(s1); readln(s2); j:=1; for i:=1 to 1000 do begin ai:=0;bi:=0;si:=0; end; for i:=length(s1) downto 1 do begin val(copy(s1,i,1),aj,c); j:=j+1; end; j:=1; for i:=length(s2) downto 1 do begin val(copy(s2,i,1),bj,c); j:=j+1; end; if length(s1)length(s2) then max:=length(s1) else max:=length(s2); for i:=1 to max do begin si:=si+ai+bi; if si=10 then begin si:=si mod 10; si+1:=si+1+1; end; end; if smax+10 then max:=max+1; for i:=max downto 1 do write(si);end.,继续思考,a,b:array1maxn of integer; 在前面的运算中我们定义数组中的数字为integer类型的值,但是我们知道integer的值数字可以表示-32000到+32000之间的数字,是否有些浪费?,高精度加法的应用,Fibonacci数列 Fibonacci数列的代表问题是由意大利著名数学家Fibonacci于1202年提出的“兔子繁殖问题”(又称“Fibonacci问题”)。 问题的提出:有雌雄一对兔子,假定过两个月后便每个月可繁殖雌雄各一的一对小兔子。问过n个月后共有多少对兔子? 已知:N=93。,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:array1100 of longint; var n,i:integer; begin readln(n); f1:=1; f2:=1; for i:=3 to n do fi:=fi-2+fi-1; writeln(fn); end.,readln(n); a1:=1;b1:=2; for i:=3 to n do begin k:=0; for j:=1 to 2100 do begin cj:=aj+bj+k; k:=cj div 10; cj:=cj mod 10; end; a:=b;b:=c; end; k:=2100; while ck=0 do k:=k-1; for i:=k downto 1 do write(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论