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;
}