递归函数
通过这道题学习了快速幂思想
以下是我简单的总结,帮助我复习回顾:
如果指数为奇数,收集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;
}