题目链接
题目描述
求:30 + 31 +…+ 3N mod 1000000007
Input
输入一个数N(0 <= N <= 109)
Output
输出:计算结果
Sample Input
3
Sample Output
40
思路
快速幂,这里给出快速幂取模的模板。
快速幂取模:
ll Quick_Mod(ll a, ll b, ll mod)
{
ll res = 1, term = a % mod;
while(b)
{
if(b & 1) res = (res * term) % mod;
term = (term * term) % mod;
b >>= 1;
}
return res;
}
C++代码:
#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
long long Quick_Mod(long long a, long long b, long long mod)
{
long long res = 1, term = a % mod;
while(b)
{
if(b & 1) res = (res * term) % mod;
term = (term * term) % mod;
b >>= 1;
}
return res;
}
int main()
{
long long n, m;
while(cin >> n)
{
m = (mod + 1) / 2;
cout << ((Quick_Mod(3, n + 1, mod) - 1) * m) % mod << endl;
}
return 0;
}
最后
以上就是野性冬瓜最近收集整理的关于C/C++编程学习 - 第20周 ② 3的幂的和的全部内容,更多相关C/C++编程学习内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复