Description
求:3^0 + 3^1 +...+ 3^(N) mod 1000000007。
Input
每行一个整数N(0 <= N <= 10^9)
Output
输出:计算结果
Sample Input
3
Sample Output
40
HINT
(a/b)%c=(a%(b*c))/b (a 能整除b)
解析:该问题就是(等比数列求和+快速幂算法),注意题目中的提示,除法去摸要乘逆元,不然会WA。
#include <stdio.h>
long long quickmod(long long base,long long pow){ //快速幂函数噢
long long result=1;
while(pow>0){
if(pow&1){
result=(result*base)%1000000007;
}
pow>>=1;
base=(base*base)%1000000007;
}
return result;
}
int main()
{
long long n,i;
while(~scanf("%lld",&n)){
if(n==0) printf("1\n"); //n==0,就是1
else printf("%lld\n",(1-quickmod(3,n+1))*(-500000004)%1000000007);
} //500000004是2在模1000000007下的逆元,除法在取模操作时候要乘逆元,不能直接除
return 0;
}