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.