Pascal高精度快速開(kāi)方_第1頁(yè)
Pascal高精度快速開(kāi)方_第2頁(yè)
Pascal高精度快速開(kāi)方_第3頁(yè)
Pascal高精度快速開(kāi)方_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、開(kāi)方運(yùn)算,高精度冪(程序中為Power),Longint指數(shù)(程序中為Exp),求底。估計(jì)底數(shù)范圍后采用2分查找,速度很快。測(cè)試數(shù)據(jù):111 /指數(shù) /冪/這個(gè)數(shù)據(jù)據(jù)說(shuō)是以前一個(gè)人(叫什么Shakuntala Devi,谷歌一下)和電腦PK運(yùn)算速度的測(cè)試數(shù)據(jù),結(jié)果電腦輸了,不爽,用這個(gè)程序重振電腦雄風(fēng),保證比那人快多了。type ltype=array 0.1000 of word;const enum:array 1.9 of longint=(16,128,1024,16384,131072,1048576,16777216,134217728,1073741824);var pwr,cp

2、wr:ltype; exp,bse:longint; ta:ansistring;function ttltype(a:ansistring):ltype; /Convert Ansistring to LTypevar i:longint; c:ltype;begin c0:=length(a); for i:=1 to c0 do ci:=ord(ac0-i+1)-48; ttltype:=c;end;function ttltype(a:longint):ltype; /Convert String to LTypevar i:longint; c:ltype;begin c0:=0;

3、i:=a; while i<>0 do begin cc0+1:=i mod 10; i:=i div 10; c0:=c0+1; end; ttltype:=c;end;function ttString(a:ltype):string; /Convert LType to Stringvar i:longint; c:string;begin c:='' for i:=a0 downto 1 do c:=c+chr(ai+48); ttString:=c;end;function multiply(a,b:ltype):ltype; /High_Multiply

4、var c:ltype; t,i,j:longint;begin fillchar(c0,sizeof(c),0); c0:=a0+b0+1; for i:=1 to a0 do for j:=1 to b0 do begin inc(ci+j-1,ai*bj mod 10); ci+j:=ci+j+(ai*bj div 10)+(ci+j-1 div 10); ci+j-1:=ci+j-1 mod 10; end; while cc0=0 do dec(c0); multiply:=c;end;function getpwr(bse:longint):ltype; /Calculate Po

5、wer <Pinyin:Mi,Di 4 Sheng>var c,nbse:ltype; i:longint;begin nbse:=ttltype(bse); c:=nbse; for i:=2 to exp do c:=multiply(nbse,c); getpwr:=c;end;function chkbig:word; /Compare Powervar i:longint; c:word;begin /cpwr > pwr -> 2 /cpwr < pwr -> 0 /cpwr = pwr -> 1 c:=1; /Normal State,I

6、f pwr=cpwr Then Never Change if cpwr0>pwr0 then /Compare Length <pwr0=length(pwr)> c:=2 else if cpwr0<pwr0 then c:=0 else /Compare Digits for i:=cpwr0 downto 1 do if cpwri>pwri then begin c:=2; break; end else if cpwri<pwri then begin c:=0; break; end; chkbig:=c;end;procedure op(a:

7、longint); /Outputbegin writeln(a); close(input); close(output); halt;end;procedure run(b,e:longint); /Main Procedure,Binary Search <Pinyin:2 Fen Chazhao>var a,i:longint; c:ltype;begin if b=e then op(b); a:=(b+e) div 2; cpwr:=getpwr(a); i:=chkbig; if i=2 then /Compare,Current (Temporary) Power

8、> Real (Input From File) Power run(b,a) else if i=0 then /Compare,Current (Temporary) Power < Real (Input From File) Power run(a+1,e) else op(a); /Compare,Current (Temporary) Power = Real (Input From File) Power,OK!end;procedure calc;var bl:longint;begin bl:=pwr0 div exp+1; /Estimate Length of Result run(1,enumbl); /Bigger & Nearest Power of 2,Example:4 Digits->16384 <216>end;begin assign(input,'Num.txt'); assign(output,'NumOut.txt&

溫馨提示

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

評(píng)論

0/150

提交評(píng)論