题目
题目详解
解题代码
注意取MOD的时候的细节!
- 一旦快速幂中的底数需要取模,那就把原本的底数取模再得次方!
- 由于最后取的结果是减法,所以可能产生负数,需要加一个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;
}