[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-8;
const ll INF = 9e18 + 7;
const int maxn = 5e5 + 10;
inline ll read() {
    ll n = 0, f = 1; char ch = getchar();
    while (ch<'0' || ch>'9') { f = -1, ch = getchar(); }
    while (ch >= '0'&&ch <= '9') { n = n * 10 + ch - '0', ch = getchar(); }
    return n * f;
}
ll qpow(ll a, ll b, ll mod) {
    ll ans = 1;
    a %= mod;
    while (b) {
        if (b & 1)
            ans = ans * a%mod;
        a = a * a%mod;
        b >>= 1;
    }
    return ans;
}
int main() {
    ll m, n;
    m = read(), n = read();
    printf("%lld\n", (qpow(m, n, 100003) - m * qpow(m - 1, n - 1, 100003) % 100003 + 100003) % 100003);
}

 

posted @ 2019-07-01 20:03  祈梦生  阅读(51)  评论(0编辑  收藏