51Nod 1013 3的冪的和

2021-08-20 02:48:55 字數 807 閱讀 4495

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

input

輸入乙個數n(0 <= n <= 10^9)

output

輸出:計算結果

sample input

3
sample output

40
題解:

等比數列前(n+1)項和,公比為3首項為1所以t=( 3^(n+1)-1 ) / 2 % 1000000007。

3^(n+1)用快速冪解決,而除法取模只需將除法變乘法即可,也就是用被除數去乘以除數的乘法逆元。

求乘法逆元用費馬小定理:當模為素數,a的逆元為mypow(a,mod-2)。

**:

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

#define mod 1000000007

long long mypow(long long t,long long n)

t *= t;

t %= mod;

n >>= 1;

} return mid;

}int main(){

long long n;

cin>>n;

long long t = mypow(3,n+1)-1;

t = (t*mypow(2,mod-2))%mod;

cout<

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...