求:3^0 + 3^1 +...+ 3^(N) mod 1000000007
Input
输入一个数N(0 <= N <= 10^9)
3
40
这个如果直接求,会爆,所以找了个简单的。
直接根据等比数列的求和公式再加一个求q-1的逆元,不过貌似2关于1e9+7的逆元可以背下来,反正我就偷个懒~~~
还有一种递推的方法有点复杂,以后再补吧~~~
#include<iostream>
#define LL long long
using namespace std;
LL qpow(LL a,LL b){
LL ans=1;
while(b){
if(b&1)
{
ans=(ans*a)%1000000007;
}
a=(a*a)%1000000007;
b>>=1;
}
return ans;
}
int main()
{
LL n;
cin>>n;
LL s;
s=((qpow(3,n+1)-1)*500000004)%1000000007;
cout<<s<<endl;
return 0;
}