在1s内求2的N次方(n小于等于50000),位运算+快速幂+高精度,pasca_快速幂算法求a的n次方

其他范文 时间:2020-02-27 23:31:17 收藏本文下载本文
【www.daodoc.com - 其他范文】

在1s内求2的N次方(n小于等于50000),位运算+快速幂+高精度,pasca由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“快速幂算法求a的n次方”。

var

k,n,i,j,top:longint;

a,b:array[0..30000] of longint;procedure mul;var

i,j:longint;

a:array[0..30000] of longint;begin

fillchar(a,sizeof(a),0);

for i:=1 to top do

for j:=1 to top do

a[i+j-1]:=a[i+j-1]+b[i]*b[j];

for i:=1 to top*2-1 do

b[i]:=a[i];

top:=top*2-1;

for j:=1 to top-1 do

begin

b[j+1]:=b[j] div 10+b[j+1];

b[j]:=b[j] mod 10;

end;

while b[top]>=10 do

begin

b[top+1]:=b[top] div 10;

b[top]:=b[top] mod 10;

inc(top);

end;end;begin

readln(n);

i:=0;

while n>0 do

begin

inc(i);

a[i]:=n mod 2;

n:=n div 2;

end;

top:=1;

b[1]:=1;

k:=i;

for i:=k downto 1 do

begin

mul;

if a[i]=1 then

begin

for j:=1 to top do

b[j]:=b[j]*2;

for j:=1 to top-1 do

begin

b[j+1]:=b[j] div 10+b[j+1];

b[j]:=b[j] mod 10;

end;

while b[top]>=10 do

begin

b[top+1]:=b[top] div 10;

b[top]:=b[top] mod 10;

inc(top);

end;

end;

end;

for i:=top downto 1 do

write(b[i]);

writeln;end.

下载在1s内求2的N次方(n小于等于50000),位运算+快速幂+高精度,pascaword格式文档
下载在1s内求2的N次方(n小于等于50000),位运算+快速幂+高精度,pasca.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文