快速幂

 

 

#include<iostream>
typedef long long ll;
using namespace std;
ll mod = 1000000007;

ll qpow(ll a, ll n)//计算a^n % mod
{
    ll re = 1;
    while(n)
    {
        if(n & 1)//判断n的最后一位是否为1
            re = (re * a) % mod;
        n >>= 1;//舍去n的最后一位
        a = (a * a) % mod;//将a平方
    }
    return re % mod;
}

int main()
{
    ll n;
    cin >> n;
    ll ans = n * qpow(2,n-1) % mod;
    cout << ans;
    return 0;
}

此题的公式为:n*(2^(n-1))

用了快速幂模板即可,理解渗透参悟

posted @ 2020-03-08 16:27  恶魔岛  阅读(153)  评论(0编辑  收藏  举报