求:3^0 + 3^1 +...+ 3^(n) mod 1000000007
input
輸入乙個數n(0 <= n <= 10^9)
output
輸出:計算結果
input示例
3
output示例
40
思路:
根據等比數列和的公式,本題的解為((3^(n+1) - 1) / 2) % 1000000007。
如果x與y的積除以z所得的餘數為1,即xy = 1 (mod z),則稱x和y對於模數z來說互為逆元。假定(b∗x)%c=1則
a/b%c=a/b∗1%c=a/b%c∗1%c=a/b%c∗(b∗x)%c=(a/b∗b∗x)%c=(a∗x)%c
在本題中,2*500000004 = 1 (mod 1000000007),所以500000004是2對於1000000007的逆元。則
(3^(n+1)−1)/2%1000000007=(3^(n+1)−1)∗500000004%1000000007
這樣,就將除法運算轉換為乘法運算。
#include #include using namespace std;
typedef long long int ll;
ll mod = 1e9 + 7;
ll mod_pow(ll a, ll k)
k /= 2;
base = (base * base) % mod;
} return result;
}int main()
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...
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題意 思路 明顯的等比數...