作业帮 > 综合 > 作业

pascal高精度快速幂程序

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/05/05 23:32:28
pascal高精度快速幂程序
pascal高精度快速幂程序
type arr=array[0..10000]of longint;
var x,y,i,n,k,m:longint; a,b,c:arr; s:set of 0..31 absolute y;
ch:char;
procedure copyarr(var a,b:arr);
var i:longint;
begin
for i:=0 to a[0] do b[i]:=a[i];
end;
procedure cheng(var c,a,b:arr); {c:=a*b}
var i,j,k:longint;
begin
fillchar(c,sizeof(c),0);
for i:=1 to a[0] do
for j:=1 to b[0] do
begin
c[i+j-1]:=c[i+j-1]+a[i]*b[j];
k:=c[i+j-1] div 10000;
inc(c[i+j],k);
c[i+j-1]:=c[i+j-1] mod 10000;
end;
c[0]:=a[0]+b[0]-1;
if c[c[0]+1]>0 then inc(c[0]);
end;
begin
readln(x,y);
c[0]:=1; c[1]:=1; i:=0;
while x>0 do
begin
inc(i);
a[i]:=x mod 10000; x:=x div 10000;
end;
a[0]:=i; copyarr(a,b);
k:=31; while not (k in s) do dec(k);\x09{k是幂的二进制最高位}
i:=0;
while i