快速幂模板题
主要思路是参考题解来的
快速幂题目思想
1.利用二进制位运算实现快速幂求解
2.如果二进制位上是0就跳过发,否则就运算
具体思想参考代码就行
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e5 + 10; const int mod = 1e9 + 7; ll fastpow(ll a, ll b) { ll res = 1; //用res返回结果 while (b) { if (b & 1) //如果b的最后一位是1,表示这个地方需要乘 res = res * a % mod; b >>= 1; //b右移一位,把刚刚处理过的b的最后一位去掉 a = a * a % mod; //推算乘积 } return res; } int main() { ll n, t; scanf("%lld", &t); while (t--) { scanf("%lld", &n); printf("%lld\n", n * fastpow(2, n - 1) % mod); } }