高精度乘法與階乘
發(fā)表時(shí)間:2023-08-20 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]一、高精度乘法基本思想和加法一樣。其基本流程如下: ①讀入被乘數(shù)s1,乘數(shù)s2 ②把s1、s2分成4位一段,轉(zhuǎn)成數(shù)值存在數(shù)組a,b中;記下a,b的長(zhǎng)度k1,k2; ③i賦為b中的最低位; ④從...
一、高精度乘法基本思想和加法一樣。其基本流程如下:
①讀入被乘數(shù)s1,乘數(shù)s2
②把s1、s2分成4位一段,轉(zhuǎn)成數(shù)值存在數(shù)組a,b中;記下a,b的長(zhǎng)度k1,k2;
③i賦為b中的最低位;
④從b中取出第i位與a相乘,累加到另一數(shù)組c中;(注意:累加時(shí)錯(cuò)開(kāi)的位數(shù)應(yīng)是多少位
?)
⑤i:=i-1;檢測(cè)i值:小于k2則轉(zhuǎn)⑥,否則轉(zhuǎn)④
⑥打印結(jié)果
例:程序下載
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.