正常算2^11的时候一般是这样:把2连乘11次,但数字较大时没办法算出来,所以需要快速幂。快速幂就是把次方11拆为二进制数1011,11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1,2^11 = 2^(2º×1) + 2^(2¹×1) + 2^(2³×1),化简为2^11 = 2^(2³×1 + 2¹×1 + 2º×1)
代码
#include#include using namespace std; int power(int a, int b) { int ans = 1; while(b != 0) { if(b & 1 != 0) //&1取b的二进制数最后一位 ans *= a; a *= a; b >>= 1; //运算完后去掉b二进制数中最后一位,用">>="来处理 } return ans; } int main() { int a, b, ans; cin >> a >> b; ans = power(a,b); cout << ans << endl; }
Comments | NOTHING