SSL JudgeOnline 1296——x^n次幂

Description

求一个实数x的n次整数幂 。(保留小数点后两10位)

Input

x
n

Output

x^n
(结果10位)


如果直接暴力时间效率为o(n)数据最大是大于100000000的,所以我们只能找方法。

这题可以用分治

每次将指数除以2,如123——61——30——15——7——3——1——0

然后我们先将1次幂的值求出来,并且我们知道3次幂=1次幂*1次幂*x(为底数)我们就可以按照这个公式,一步一步将只求回去,这样的效率就会低很多。


代码如下:

var  y,n:extended; m:longint;

procedure exprec(x:extended; m:longint);
begin
  if m=0 then y:=1
  else
    begin
      exprec(x,m div 2);
      y:=y*y;
      if odd(m) then y:=y*x;
    end;
end;

begin
  readln(n);
  readln(m);
  exprec(n,m);
  write(y:0:10);
end.
原文地址:https://www.cnblogs.com/Comfortable/p/8412466.html