好久没和大家见面了,是因为之前一直没时间写,好了,拉我们今天就来看一下高精度吧。
众所周知,在pascal中,qword是最大的变量了,但它也仅仅只能存下辣么几位数,对不对?(对对对)。
那如果当我们已经用不了qword的时候怎么办?(好抓狂对不?)。
那这时候就要晒出我们的高精度!高精度!高精度!重要的事情说三遍(宝宝满脸兴奋)。
那高精度究竟是什么呢???亲,请接着往下看。
同志们呐,我记得咱们在小学三年级时就学过竖式对吧!(别告诉我你忘了)
来,如果忘了的同学跟我复习一遍(偷笑);
5 2 5
+6 7 2
1 1 9 7
同志忍住,别笑!
开个玩笑!其实,高精度的加法的原理就是竖式,减法,乘法亦是如此。
这里给大家一个加法的参考程序:
var
a,b,c:array[1..10000]of longint;
s,s1:ansistring; //读入的两个数
k,i,lena,lenb,lenc,x:longint;
begin
readln(s);
lena:=length(s);
for i:=lena downto 1 do
begin
a[i]:=ord(s[lena-i+1])-48; //将读入的第一个数分开
end;
readln(s1);
lenb:=length(s1);
for i:=lenb downto 1 do
begin
b[i]:=ord(s1[lenb-i+1])-48; //将读入的第二个数分开
end;
if
lena>lenb then
x:=lena
else
x:=lenb;
for i:=1 to x do
begin
c[i]:=(a[i]+b[i]+k)mod 10; //上下两部均为加法运算and进位
k:=(a[i]+b[i])div 10;
end;
for i:=x downto 1 do
begin
write(c[i]); //输出答案
end;
end.
今天就先讲到这里,下一次再细讲高精度除法。
求关注和赞哦!
88