pascal高精度

好久没和大家见面了,是因为之前一直没时间写,好了,拉我们今天就来看一下高精度吧。

          众所周知,在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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值