51Nod 1013 3的冪的和


求:3^0 + 3^1 +…+ 3^(N) mod 1000000007 
Input 
輸入一個數N(0 <= N <= 10^9) 
Output 
輸出:計算結果 
Input示例 

Output示例 

40

思路:等比數列求出求和公式后,取余(乘法逆元)

#include <cstdio>
#include <iostream>
using namespace std;
typedef long long ll;
const ll md = (int) 1e9+7;
ll mypow(ll a , ll e ) {
   if(e == 0) return 1;
   return e%2 == 1 ? a*mypow(a,e-1)%md : mypow(a*a%md,e>>1);
}
int main(void) {
    ll n;
    cin >> n;
    n++;
    cout << (mypow(3,n) - 1) * (ll)(5e8+4) % md << endl; // 2*? = 1(mod 1e9+7)
    return 0;
}



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: