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
题解:
这里直接用等比数列求和公式会WA。原因日后再来研究。
相关文章:http://www.cnblogs.com/Tuesdayzz/p/5758670.html
费马小定理:
在p是素数的情况下,对任意整数x都有xp≡x(mod)p。
如果x无法被p整除,则有xp−1≡1(modp)。
可以在p为素数的情况下求出一个数的逆元,x∗xp−2≡1(modp),xp−2即为逆元。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const LL mod = 1000000007;
LL mod_pow(LL x,LL n)
{
LL res=1;
while(n>0)
{
if(n&1)
{
res = res*x%mod;
}
x = x*x%mod;
n>>=1;
}
return res;
}
int main()
{
LL n,ans;
cin>>n;
n++;
ans = (mod_pow(3,n)-1)*500000004 % mod;
cout<<ans<<endl;
return 0;
}