高精度加減乘除法市公開課金獎市賽課一等獎?wù)n件_第1頁
高精度加減乘除法市公開課金獎市賽課一等獎?wù)n件_第2頁
高精度加減乘除法市公開課金獎市賽課一等獎?wù)n件_第3頁
高精度加減乘除法市公開課金獎市賽課一等獎?wù)n件_第4頁
高精度加減乘除法市公開課金獎市賽課一等獎?wù)n件_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、高精度算法實現(xiàn)(1) 數(shù)據(jù)接收和存貯 : 最常見一個方法時,當(dāng)輸入數(shù)很長時,可采取字符串方式輸入,再經(jīng)過字符串函數(shù)操作運(yùn)算,將每一位數(shù)取出,存放在數(shù)組內(nèi)。(注意:倒序存放) 987654s1. .sn987654 sn .s1第1頁高精度算法實現(xiàn)數(shù)據(jù)接收和存放gets(s);Long=strlen(s);for (i=0;i10 g=a1 /10 a1=a1 % 101441第5頁高精度算法實現(xiàn)減法確定差位數(shù) 設(shè)LA為A位數(shù),LB為B位數(shù),則兩數(shù)之差位數(shù)最大為較大數(shù)位數(shù),即假如LALB,則差位數(shù)最大為LA。借位處理 做減法運(yùn)算時,要先判斷是否需要借位,假如需要借位,從上一位借過一個10,上一位

2、數(shù)減去1,處理完之后再相減。負(fù)數(shù)處理 假如減數(shù)大于被減數(shù),則交換A、B值,并令負(fù)數(shù)標(biāo)志 T=-1。當(dāng)打印計算結(jié)果時,先判斷 T 值是否為-1,假如T=-1,則在數(shù)值前面先輸出一個負(fù)號。(怎樣實現(xiàn)?)第6頁高精度算法實現(xiàn)乘法數(shù)據(jù)接收和存放同加法和減法確定積位數(shù) 設(shè)LA為A位數(shù),LB為B位數(shù),乘積位數(shù)最多為LA+LB,最少為LA+LB-1。所以,乘積位數(shù)上限為LA+LB。算法 首先計算被乘數(shù)與乘數(shù)個位數(shù)字乘積,把結(jié)果保留到積數(shù)組中,然后再用被乘數(shù)去乘以乘數(shù)十位數(shù)字,把結(jié)果退一位加到積數(shù)組中。每加一次乘積結(jié)果就進(jìn)行一次進(jìn)位處理,放在一個新組數(shù)里面,其方法與加法中進(jìn)位處理一樣。第7頁分析eg:C1=a

3、1*b1C2=a1*b2+a2*b1+jwC3= a3*b1+a2*b2+jwC4=a4*b1+a3*b2+jw 觀察:1:ai*bj應(yīng)該累加到:i+j-1位置2:累加總結(jié)果為Ci+j-1= ai*bj+ Ci+j-1(原位置上數(shù)3:所以每次累加完后 1)帶入下一位累加進(jìn)位為: ci+j+= Ci+j-1/10 2)本位實際數(shù): Ci+j-1%= 10第8頁高精度算法實現(xiàn)除法1求多精度A單精度B商和余數(shù)數(shù)據(jù)接收和存放采取字符串輸入方式,設(shè)參加運(yùn)算兩個數(shù)分別為A和B,利用字符串函數(shù)把字符串轉(zhuǎn)化為數(shù)值,將A中每一位數(shù)字分別存放在A數(shù)組中,最低位在第一個單元中。B則能夠用普通整數(shù)變量來接收和存放。算

4、法首先,我們知道,在做除法運(yùn)算時,有一個不變量和三個改變量,不變量是除數(shù),三個改變量分別是:被除數(shù)、商和余數(shù)。做除法運(yùn)算時,每次都是用被除數(shù)減去商與除數(shù)積,假如所得余數(shù)不為零,則將其擴(kuò)大10倍再次作為被除數(shù),繼續(xù)試除,直至余數(shù)為零或到達(dá)要求準(zhǔn)確度為止。注意在數(shù)據(jù)接收和存貯時get(s); for (i=0;iB) 數(shù)據(jù)接收和存放采取字符串輸入方式,設(shè)參加運(yùn)算兩個數(shù)分別為A和B,利用字符串函數(shù)把字符串轉(zhuǎn)化為數(shù)值,將A、B中每一位數(shù)字分別存放在A和B數(shù)組中,最低位在第一個單元中。算法能夠用減法代替除法運(yùn)算:不停比較A1.n與B1.n大小,假如A1.n=B1.n則商C1.n+1C1.n,然后就是一個

5、減法過程:A1.n-B1.nA1.n。因為簡單減法速度太慢,故必須進(jìn)行優(yōu)化。 思想:從商最高位開始做減法即: la-lb+1 依次求到最終一位。 1: 設(shè)置一個位置值:pos = LA-LB+1, 2: 外循環(huán): i= (pos .1 :遞減1) 內(nèi)循環(huán):復(fù)制 bj (j=1.LB) 到 tmpj+pos-13: 比較a,tmp大小 ( compare (a, tmp ) =0 ) ci+ 第11頁Eg: a=12785 b=786 la=5 lb=3pos=la-lb+1=3 減法過程以下i=pos .1 i-i=2Tmp: 786 0 A: 12785A: 12785i=3Tmp: 78600b1tmp3J=1 i=3J=2 i=3b2tmp4J=3 i=3b3tmp5bj tmpi+j-1While Atmp C2=1只減法一次,每次減后剩下數(shù)繼續(xù)放 a=4925tmp 商:ci Atmp Ci+ A: 4 9 2 5外循環(huán):i 求第 I 位商 內(nèi)循環(huán) j :bj復(fù)制到tmp中第12頁i=1Tmp: 7 8 6 A: 4 9 2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論