求:3^0 + 3^1 +...+ 3^(N) mod 1000000007
Input
输入一个数N(0 <= N <= 10^9)
Output
输出:计算结果
Sample Input
3
Sample Output
40
#include<bits/stdc++.h>
using namespace std;
#define c 1000000007
long long f(long long a, long long b){
int ans = 1;
while(b){
if(b & 1){
ans = (ans * a)%c;
}
b>>=1;
a = (a * a) % c;
}
return ans;
}
int main(){
//long long sum = 0;
int n;
cin >> n;
long long t = (f(3, n + 1) - 1);
// cout << t << endl;
// cout << f(2, c - 20000000) << endl;
long long b1 = t * f(2, c - 2) % c;
cout << b1 << endl;
return 0;
}
一个数有逆元的充分必要条件是gcd(a,n)=1gcd(a,n)=1,此时逆元唯一存在
(a b)mod p=((a mod p)×(b mod p) mod p