求:3^0 + 3^1 +...+ 3^(N) mod 1000000007
Input
输入一个数N(0 <= N <= 10^9)
Output
输出:计算结果
Input示例
3
Output示例
40
逆元求解:https://blog.csdn.net/baidu_35643793/article/details/75268911
快速幂求解:https://blog.csdn.net/qq_37867156/article/details/79979222
题解:求乘法逆元用费马小定理:当模为素数,a的逆元为pow_mod(a,mod-2).
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <vector> #include <set> #include <map> #define LL long long #define mod 1000000007 using namespace std; LL quickPow(LL a,LL b){ LL ans=1,base = a; while(b){ if(b&1) ans=ans*base%mod; base=base*base%mod; b>>=1; } return ans; } int main() { LL n; while(~scanf("%lld",&n)){ LL ans=quickPow(3,n+1)-1; ans=(ans*quickPow(2,mod-2))%mod; printf("%lld\n",ans); } return 0; }