题目:
AC代码参考:
#include <iostream>
using namespace std;
const int MOD = 1e9 + 7; // 定义常量MOD,值为1e9 + 7
long long binpow(long long a, long long b, long long m) {
a %= m; // 取模,避免a过大
long long res = 1; // 初始化res为1
while (b > 0) { // 当b大于0时循环
if (b & 1) // 如果b的二进制末位为1
res = res * a % m; // 将res乘以a并取模
a = a * a % m; // 将a平方并取模
b >>= 1; // 将b右移一位,相当于除以2
}
return res;
}
int main() {
long long n;
cin >> n;
cout << binpow(n, MOD - 2, MOD) << endl;
return 0;
}
具体题解过程参见以下视频,本代码也是在此基础上优化: