内容:
求:3^0 + 3^1 +...+ 3^(N) mod 1000000007
Input
输入一个数N(0 <= N <= 10^9)
Output
输出:计算结果
Sample Input
3
Sample Output
40
My code:
#include <stdio.h>
#include <math.h>
const int mod = 1e9+7;
long long quickpow ( long long a, long long b) //快速幂
{ //费马小定理求逆元
long long ret = 1;
a%= mod;
while (b)
{
if (b & 1)
ret = (ret * a) % mod ;
a = (a * a) % mod;
b >>=1;
}
return ret;
}
int main()
{
long long s,n;
scanf("%lld",&n);
s=((quickpow(3,n+1)-1)*quickpow(2,mod-2))%mod; //等比数列a0*(1-pow(q,n+1))/(1-q)
printf("%lld\n",s);
return 0;
}