通过这道题学习了快速幂思想
以下是我简单的总结,帮助我复习回顾:
如果指数为奇数,收集current底数后,指数除以2,底数翻倍,继续循环
如果指数为偶数,直接指数除以2,底数翻倍,继续循环
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll p = 1e9 + 7;
//底数2,指数是a
ll quick_power(ll base,ll power)
{
ll res = 1;
while(power > 0)
{
if (power&1) res = res * base % p;
power >>= 1;//除以2
base = (base * base) % p;
}
return res;
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
ll a; cin >> a;
cout << quick_power(2,a)<< '\n';
return 0;
}