牛客-开心的涂刷——数学分析+快速幂取模问题

Posted C+++++++++++++++++++

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客-开心的涂刷——数学分析+快速幂取模问题相关的知识,希望对你有一定的参考价值。

题目

题目链接

题目详解

解题代码

注意取MOD的时候的细节!

  1. 一旦快速幂中的底数需要取模,那就把原本的底数取模再得次方!
  2. 由于最后取的结果是减法,所以可能产生负数,需要加一个MOD数防止变负数而无法得到正确的MOD答案!
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

const int MOD = 1000000007;
ll quickPow(ll x,ll c)
    ll t = x;
    ll ret = 1;
    while (c)
        if(c&1)ret = (ret*t)%MOD;
        c >>= 1;
        t = (t*t)%MOD;
    
    return ret;


int main() 
    ios::sync_with_stdio(false);
    ll n,m;
    cin>>n>>m;
    m %= MOD;
    cout<<(quickPow(m,n)%MOD-((m*quickPow(m-1,n-1))%MOD)+MOD)%MOD;
    return 0;

以上是关于牛客-开心的涂刷——数学分析+快速幂取模问题的主要内容,如果未能解决你的问题,请参考以下文章

转C语言快速幂取模算法小结

快速幂取模

模板快速幂取模

关于快速幂取模

快速幂取模算法

快速幂取模