51Nod 1013 3的冪的和 快速冪 逆元

2021-08-30 13:58:25 字數 684 閱讀 9788

求:3^0 + 3^1 +...+ 3^(n) mod 1000000007

收起

輸入乙個數n(0 <= n <= 10^9)
輸出:計算結果
3
40
等比數列求和公式:

sum=a1*(1-q^n)/(1-q),所以可以轉化為:

sum=(3^(n+1)-1)/2;

因為數太大,需要利用逆元來代替/2運算。

因為2與1000000007互質,所以可以利用公式2^(mod-2)求出逆元。

所以最終公式為:

sum=(3^(n+1)-1)*(2^(mod-2))%mod;

套用快速冪求出答案。

**如下:

#include #include #include #include using namespace std;

typedef long long ll;

const ll mod=1000000007;

ll n;

ll fast (ll a,ll b)

a=a*a%mod;

b/=2;

}return sum;

}int main()

51nod 1013 3的冪的和

求 3 0 3 1 3 n mod 1000000007 input 輸入乙個數n 0 n 10 9 output 輸出 計算結果input示例 3output示例 40思路 根據等比數列和的公式,本題的解為 3 n 1 1 2 1000000007。如果x與y的積除以z所得的餘數為1,即xy 1 ...

51 nod 1013 3的冪的和

1013 3的冪的和 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 求 3 0 3 1 3 n mod 1000000007 input 輸入乙個數n 0 n 10 9 output 輸出 計算結果input示例 3output示例 40思路為快速冪加逆元,至於...

51NOD 1013 3的冪的和

求 3 0 3 1 3 n mod 1000000007 input 輸入乙個數n 0 n 10 9 output 輸出 計算結果input示例 3output示例 40 很簡單,這個題目是乙個前n項求和的題 首先寫出求和公式發現分母上有個2劃開後可以變成3 n 2 1 2鑑於他是乙個整型數而3 n...