高精度乘法和阶乘


                                                                                                                       
高精度乘法和阶乘

------------------------------------------------------------------------------

--
                                                                                                                       

一、高精度乘法基本思想和加法一样。其基本流程如下:

①读入被乘数s1,乘数s2
②把s1、s2分成4位一段,转成数值存在数组a,b中;记下a,b的长度k1,k2;
③i赋为b中的最低位;
④从b中取出第i位与a相乘,累加到另一数组c中;(注意:累加时错开的位数应是多少位                                         

?)
⑤i:=i-1;检测i值:小于k2则转⑥,否则转④
⑥打印结果

例:程序下载

program chengfa;
const n=100;                                                                                                           
type ar=array [1..n] of integer;
var  a,b:ar; k1,k2,k:integer;
    c:array [1..200] of integer;
    s1,s2:string;
procedure fenge(s:string;var d:ar; var kk:integer);
var ss:string;                                                                                                         
   i,code:integer;
begin
    i:=length(s);
    kk:=n;
    repeat
          ss:=copy(s,i-3,4);
          val(ss,d[kk],code);
          kk:=kk-1;
          s:=copy(s,1,i-4);
          i:=i-4;
    until i<0;
    kk:=kk+1;
end;
procedure daying;
var i:integer;
begin
     write(c[k]);
     for i:=k+1 to 2*n do     begin
         if c[i]<1000 then write('0');
         if c[i]<100 then  write('0');
         if c[i]<10 then write('0');
         write(c[i]);                                                                                                  
     end;
     writeln;
end;
begin
     init;
     jisuan;
     daying;
end.


二、求N!当N稍微大一点时结果就很大了(如n=10时N!=3628800;n=20时N!=24329020081

76640000);因此,求阶乘通常都要用到高精度算法。基本过程和乘法一样,只是多了控制

乘法次数的一层循环。

                                      
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值