PASCAL 2的幂次方 递归算法
5个回答
展开全部
不要求高精的话2的幂用shl(左移)运算最快
你是不是想要用快速幂
function f(x:longint):qword;
var
a:qword;
begin
if x=1 then f:=2 else
begin
a:=f(x div 2);
f:=a*a*(x mod 2+1)
end;
end;
你是不是想要用快速幂
function f(x:longint):qword;
var
a:qword;
begin
if x=1 then f:=2 else
begin
a:=f(x div 2);
f:=a*a*(x mod 2+1)
end;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var n:int64;
procedure work(x:int64);
var t,k:int64;
begin
if x=1 then
begin
write('2(0)');
exit;
end;
if x=2 then
begin
write('2');
exit;
end;
if x=3 then
begin
write('2+2(0)');
exit;
end;
t:=2;
k:=0;
while t<=x do
begin
t:=t*2;
k:=k+1;
end;
write('2(');
work(k);
write(')');
if (x-t div 2<>0) then
begin
write('+');
work(x-t div 2);
end;
end;
begin
readln(n);
work(n);
end.
procedure work(x:int64);
var t,k:int64;
begin
if x=1 then
begin
write('2(0)');
exit;
end;
if x=2 then
begin
write('2');
exit;
end;
if x=3 then
begin
write('2+2(0)');
exit;
end;
t:=2;
k:=0;
while t<=x do
begin
t:=t*2;
k:=k+1;
end;
write('2(');
work(k);
write(')');
if (x-t div 2<>0) then
begin
write('+');
work(x-t div 2);
end;
end;
begin
readln(n);
work(n);
end.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
readln(n);
writeln(1 shl n);
最好不要用递归
writeln(1 shl n);
最好不要用递归
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
题解么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询