51Nod_1013 3的幂的和
http://www.51nod.com/Challenge/Problem.html#!#problemId=1013
题目
求:3^0 + 3^1 +...+ 3^(N) mod 1000000007
输入
输入一个数N(0 <= N <= 10^9)
输出
输出:计算结果
样例输入
3
样例输出
40
分析
等比数列求和公式如下:
因此Sn=(3^(n+1) -1)/2
结果须对1000000007取余,因此需要用到2相对于1000000007的乘法逆元500000004
C++程序
#include<iostream>
using namespace std;
typedef long long ll;
const ll MOD=1000000007;
ll mod_pow(ll x,ll n)
{
ll res=1;
while(n){
if(n&1)
res=(res*x)%MOD;
x=(x*x)%MOD;
n>>=1;
}
return res;
}
int main()
{
ll n;
cin>>n;
cout<<(mod_pow(3,n+1)-1)*500000004%MOD<<endl;
return 0;
}