'commit'
This commit is contained in:
29
C++课程/第十四课位运算训练精讲/快速幂.cpp
Normal file
29
C++课程/第十四课位运算训练精讲/快速幂.cpp
Normal file
@@ -0,0 +1,29 @@
|
||||
#include<iostream>
|
||||
#include <bitset>
|
||||
using namespace std;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void printEr(int b) {
|
||||
cout<<bitset<sizeof(b)*2>(b)<<endl;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int poww(int a, int b) {
|
||||
int ans = 1, base = a;
|
||||
while (b >0) {
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>b
|
||||
printEr(b);
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݵĺ<DDB5><C4BA><EFBFBD><EFBFBD>㷨
|
||||
if (b & 1) //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> & 1 <20>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ĩλ<C4A9><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һλ<D2BB><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||
ans *= base;
|
||||
base *= base;
|
||||
//<2F><><EFBFBD><EFBFBD>һλ<D2BB><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>2
|
||||
b >>= 1;
|
||||
}
|
||||
return ans;
|
||||
}
|
||||
|
||||
int main() {
|
||||
cout << poww(2,5);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user