[Bzoj1008][HNOI2008]越狱(组合计数)

时间:2023-03-09 02:42:29
[Bzoj1008][HNOI2008]越狱(组合计数)

题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1008

组合计数的简单题,可能越狱的方案数等于总方案数-不可能越狱的方案数,则:

总方案数为:mn

不可能越狱的方案数为m*(m-1)n-1,(第一个人有m种选法,之后的n-1个人有m-1种选法)。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const double eps = 1e-;
const ll INF = 9e18 + ;
const int maxn = 5e5 + ;
inline ll read() {
ll n = , f = ; char ch = getchar();
while (ch<'' || ch>'') { f = -, ch = getchar(); }
while (ch >= ''&&ch <= '') { n = n * + ch - '', ch = getchar(); }
return n * f;
}
ll qpow(ll a, ll b, ll mod) {
ll ans = ;
a %= mod;
while (b) {
if (b & )
ans = ans * a%mod;
a = a * a%mod;
b >>= ;
}
return ans;
}
int main() {
ll m, n;
m = read(), n = read();
printf("%lld\n", (qpow(m, n, ) - m * qpow(m - , n - , ) % + ) % );
}