快速求冪二分演算法

2021-07-05 01:25:34 字數 711 閱讀 1659

#includeint a,b;

void input()

}void pow1()

base=base*base;

b=b/2;//每次進行縮半,對base=base*base這一步起到約束作用

} printf("%d\n",r);

}int main()

二分演算法

求a^b

二分法:

此處b=b/2;

體現二分

base=a;

base=base*base;

可推出a^2,a^4,a^8,a^16..........

所以當b

為2^n

時可用如下**:while(b!=1) 當b

不為2^n

時比如b=6;

則按上述**:

base=a^2;  b=2;

base=a^4;  b=1

求出結果為a^4,

不符,我們可以觀察到a^2

和a^4

,如果2+4

就變成6

了,求出結果為

a^6所以只需加個判定條件

我們可以看到a^2

時,b=3

所以加個if(b%2)

r=r*base;

同時把while(b!=1)

變為while(b)

二分求冪,快速求冪

1 2 3 4 5 6 7 8 9 10 11 12 intpow3 inta,intb returnr 12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 intpow4 intx,intn result x n 1 whil...

常規求冪 二分求冪 快速位求冪

題目描述 給定數字a,b,求a b。思路 解法包括常規求冪 二分求冪 快速求冪 位運算 每一種求法中,要根據b的值進行討論,b 0,0,0。1 常規求冪 常規求冪即是根據ans a a a a。根據b的個數來就行求解 2 二分求冪 二分求冪是可以將乘法進行分組 比如a a a a a a a a a...

常規求冪 二分求冪 快速位求冪

我是因為刷杭電的題目了解到了冪運算,那就貼一下杭電的題目好了 然後在貼一下別人關於冪運算的部落格 題目描述 給定數字a,b,求a b。思路 解法包括常規求冪 二分求冪 快速求冪 位運算 每一種求法中,要根據b的值進行討論,b 0,0,0。1 常規求冪 常規求冪即是根據ans aaa a。根據b的個數...