高精度乘法(pascal)演算法實現

2021-03-31 08:56:29 字數 1128 閱讀 8578

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

①讀入被乘數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.

演算法 高精度乘法2(高精度乘高精度)

題目描述 高精度乘,求兩個很大的非負整數相乘的結果。輸入 2個非負整數,每個一行,每個整數不超過240位。輸出 一個整數,表示相乘的結果。例子 為了和演算法對應方便,用上面數乘下面數的方法12 5 2512 5502 5312 5為了運算方便,將上面兩數倒置,得到的結果也為倒序下標0 1234 56...

高精度演算法之乘法

輸入兩個高精度整數m和n m和n均不小於0且不超過100位 求這兩個高精度數的積。每一組測試資料佔2行,一行一個整數 每一組測試資料輸出佔一行,輸出乘積 36 3108思路 典型的高精度問題,兩個變數控制結果,i和j控制sum陣列,並考慮進位,兩個數的最大位就是兩個位數加起來,最後輸出時把前面的零去...

高精度演算法 大數乘法

由於相乘的兩個數答案很大超過了longlong或者unsigned longlong,就需要使用大數乘法。給定兩個正整數a和b,請你計算a b的值。輸入格式 共兩行,第一行包含整數a,第二行包含整數b。輸出格式 共一行,包含a b的值。資料範圍 1 a的長度 100000 1 b 10000 輸入樣...

高精度乘法c 實現

注 高精度乘法是應聘中常見的筆試題,主要考察用字串模擬乘法的過程,下面提供一個比較簡單的版本實現。如果錯誤,請多指教。如 123 23 1 儲存的時候從個位往前進行儲存。2 123的個位 第0位 乘以23得到49 result 0 9,result 1 4 3 123的十位 第1位 乘以23得到46...

演算法 高精度計算乘法1(高精度乘單精度)

題目描述 高精度乘單精度,a b。a是一個很大的非負整數,但不超過240位,b是一個非負整數不超過10000,求a b。高精度乘單精度的數學實現 1 2 5 25 25 50 125 諸位進位 3 1 2 512 5 2525 5012531 25實現步驟 1 string s讀入高精度數,int ...