我是靠谱客的博主 野性冬瓜,最近开发中收集的这篇文章主要介绍C/C++编程学习 - 第20周 ② 3的幂的和,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目链接

题目描述

求: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的幂的和所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部