51nod-【1013 3的幂的和】

1013 3的幂的和
基准时间限制:1 秒 空间限制:131072 KB 分值: 20  难度:3级算法题
 收藏
 关注
求:3^0 + 3^1 +...+ 3^(N) mod 1000000007
Input
输入一个数N(0 <= N <= 10^9)
Output
输出:计算结果
Input示例
3
Output示例

40

#include
typedef long long LL;
#define M 1000000007
LL quick_pow(LL a,LL n)
{
	LL ans=1;
	while(n)
	{
		if(n&1)
			ans=ans*a%M;
		a=a*a%M;
		n>>=1; 
	} 
	return ans;
} 
int main()
{
	LL n;
	scanf("%d",&n);
	LL sum1=quick_pow(3,n+1);
	LL sum2=quick_pow(-2,M-2);
	LL ans=(1-sum1-M)*sum2%M;
	printf("%lld\n",ans); 
	return 0;
}


你可能感兴趣的:(费马小定理,51NOD)