概述
题目链接
题目描述
求: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++编程学习 - 第20周 ② 3的幂的和所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复