求余 求余
序号:#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


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

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

 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 }

 

相关文章:

  • 2021-09-17
  • 2018-05-11
  • 2021-08-13
  • 2021-09-03
  • 2022-01-01
  • 2021-10-03
  • 2021-07-12
  • 2021-08-26
猜你喜欢
  • 2021-07-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-01
  • 2022-12-23
  • 2021-12-17
相关资源
相似解决方案