求:3^0 + 3^1 +…+ 3^(N) mod 1000000007
Input
输入一个数N(0 <= N <= 10^9)
Output
输出:计算结果
Input示例
3
Output示例
Input
输入一个数N(0 <= N <= 10^9)
Output
输出:计算结果
Input示例
3
Output示例
40
思路:等比数列求出求和公式后,取余(乘法逆元)
#include <cstdio>
#include <iostream>
using namespace std;
typedef long long ll;
const ll md = (int) 1e9+7;
ll mypow(ll a , ll e ) {
if(e == 0) return 1;
return e%2 == 1 ? a*mypow(a,e-1)%md : mypow(a*a%md,e>>1);
}
int main(void) {
ll n;
cin >> n;
n++;
cout << (mypow(3,n) - 1) * (ll)(5e8+4) % md << endl; // 2*? = 1(mod 1e9+7)
return 0;
}