Pascal高精度运算(加法篇)

Pascal高精度运算(加法篇)

ID:38845275

大小:244.32 KB

页数:16页

时间:2019-06-20

Pascal高精度运算(加法篇)_第1页
Pascal高精度运算(加法篇)_第2页
Pascal高精度运算(加法篇)_第3页
Pascal高精度运算(加法篇)_第4页
Pascal高精度运算(加法篇)_第5页
资源描述:

《Pascal高精度运算(加法篇)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、高精度运算加法篇类型数值范围占字节数Byte0..2551Integer-32768..32767;2Longint-2147483648..21474836474当数据超过1010以后我们就必须要用到高精度运算高精度算法入门高精度运算是指参与运算有数或运算结果远远超过计算机语言中能够表示的数的范围的特殊运算。例如:编程解决求A+B的值,其中A,B的值<=1040;高精度运算的思想就是运用字符串和一维数组的方式模拟运算口诀就是:用字符串读入数据,转化数据类型,用数组存储数据,并加以运算:高精度运算涉及到的问

2、题:1、数据的输入。2、数据的存储。3、数据的运算:进位。4、结果的输出:小数点的位置、处理多余的0等。高精度加法题目要求:输入:第一行:正整数a。第二行:正整数b。已知:a和b(<10240)。输出:a+b的值。样例输入:99999样例输出:10981、数据的输入。a和b(<10240)字符串输入:Vars1,s2:string;Readln(s1);Readln(s2);2、数据的存储。为了计算方便,采用数组存储。Vara,b,c:array[1..240]ofinteger;将字符串转换为数组存储。用

3、a存s1,b存s2。A[1]存个位,便于以后计算和进位处理len1:=length(s1);fori:=1tolen1doa[i]:=ord(s1[len1+1-i])-48;len2:=length(s2);fori:=1tolen2dob[i]:=ord(s2[len2+1-i])-48;S1=’3452345’a[1]a[2]a[3]……3、加法运算,注意进位处理。把计算结果存到数组c中:先计算。…….a[3]a[2]a[1]……b[3]b[2]b[1]+……c[3]c[2]c[1]iflen1>le

4、n2thenlen:=len1elselen:=len2;fori:=1tolendoc[i]:=a[i]+b[i];{直接先计算}计算后的c[i]可能>=10,怎样处理?处理进位:fori:=1tolendobeginc[i+1]:=c[i+1]+c[i]div10;c[i]:=c[i]mod10;end;4、结果的输出:数组c。ifc[len+1]>0thenlen:=len+1;fori:=lendownto1dowrite(c[i]);beginreadln(s1);readln(s2);j:=1;

5、fori:=1to1000dobegina[i]:=0;b[i]:=0;s[i]:=0;end;fori:=length(s1)downto1dobeginval(copy(s1,i,1),a[j],c);j:=j+1;end;j:=1;fori:=length(s2)downto1dobeginval(copy(s2,i,1),b[j],c);j:=j+1;end;iflength(s1)>length(s2)thenmax:=length(s1)elsemax:=length(s2);fori:=1to

6、maxdobegins[i]:=s[i]+a[i]+b[i];ifs[i]>=10thenbegins[i]:=s[i]mod10;s[i+1]:=s[i+1]+1;end;end;ifs[max+1]>0thenmax:=max+1;fori:=maxdownto1dowrite(s[i]);end.继续思考a,b:array[1..maxn]ofinteger;在前面的运算中我们定义数组中的数字为integer类型的值,但是我们知道integer的值数字可以表示-32000到+32000之间的数字,是否

7、有些浪费?高精度加法的应用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}varf:array[1..1

8、00]oflongint;varn,i:integer;beginreadln(n);f[1]:=1;f[2]:=1;fori:=3tondof[i]:=f[i-2]+f[i-1];writeln(f[n]);end.readln(n);a[1]:=1;b[1]:=2;fori:=3tondobegink:=0;forj:=1to2100dobeginc[j]:=a[j]+b[j]+k;k:=c[j]div10;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。