https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013
根据等比数列求和,然后再求一下逆元。
求逆元的过程是因为在计算的过程中会取模,我们放到最后再取模是错误的,所以要取逆元。
而对2模mod的逆元可以手算出来。
因为费马小定理。
#include <bits/stdc++.h>
using namespace std;
/* 简单题。
*/
typedef long long ll;
const int mod=1e9+7;
const int ny=mod/2+1;
ll quick_pow(int s,int n){
ll ans=1;
ll s1=s;
while(n){
if(n&1)ans=(ans*s1)%mod;
s1=s1*s1%mod;
n>>=1;
}
return ans;
}
int main()
{ int x;
while(~scanf("%d",&x)){
ll ans=quick_pow(3,x+1);
ans=(ans-1)*ny%mod;
printf("%lld\n",ans);
}
return 0;
}