求余

- 求余
序号:#107难度:困难时间限制:1000ms内存限制:10M

描述

f(N) = 3^0 + 3^1 + ... + 3^N 求 f(N) 除以 1000000007 的余数

输入

 

N(1 <= N <= 10^9 + 7)的值

 

输出

 

f(N) 除以 1000000007 的余数

 

输入样例

10

输出样例

88573


是我太年轻,竟然没注意到细节。

等比数列求和公式
  • formula
  • formula

 1 #include <bits/stdc++.h>
 2 #define LL long long int
 3 #define MOD 1000000007 
 4 using namespace std;
 5 
 6 LL quick(LL a,LL x){
 7     LL r = 1;
 8     while(x>0){
 9         if (x&1){
10             r = (r*a)%MOD;
11         }
12         a = (a*a)%MOD;
13         x>>=1;  
14     }
15     return r%MOD;
16 }
17 
18 LL n;
19 int main(){
20     while(cin >> n){
21         LL ans = quick(3, n + 1) - 1;
22         if (ans%2 == 0)
23             cout << ans/2 << endl;
24         else
25             cout << (ans+MOD)/2 << endl;
26     }
27     return 0;
28 }

 

posted @ 2019-01-24 23:18  #忘乎所以#  阅读(326)  评论(0编辑  收藏  举报