基准时间限制:1 秒 空间限制:131072 KB 分值: 20
难度:3级算法题
求:3^0 + 3^1 +...+ 3^(N) mod 1000000007
Input
输入一个数N(0 <= N <= 10^9)
Output
输出:计算结果
Input示例
3
Output示例
40
emmmmm(我为什么会用快速幂暴力写.......)
这是一个等比数列前n项和,算出通项公式后用逆元求解.....
第一次写这种,好菜啊......
参考了:点击打开链接
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
ll qmod(ll a,ll b)
{
ll ans=1ll;
ll base=a;
while(b)
{
if(b&1)
{
ans=((ans%mod)*(base%mod))%mod;
}
b>>=1;
base=((base%mod)*(base%mod))%mod;
}
return ans;
}
int main()
{
ll n;
while(~scanf("%lld",&n))
{
ll ni=qmod(2,mod-2)%mod;;
cout<<((qmod(3,n+1)-1)*ni)%mod<<endl;
}
return 0;
}