原题传送门
随便选宗教,方案数
m
n
m^n
mn
不会发生越狱的情况,第一个人选
m
m
m种宗教,后面
(
n
−
1
)
(n-1)
(n−1)个人都能选
(
m
−
1
)
(m-1)
(m−1)种宗教,方案数为
m
∗
(
m
−
1
)
n
−
1
m*(m-1)^{n-1}
m∗(m−1)n−1
减一减,答案为
m
n
−
m
∗
(
m
−
1
)
n
−
1
m^n-m*(m-1)^{n-1}
mn−m∗(m−1)n−1
快速幂搞一搞即可,注意longlong
Code:
#include <bits/stdc++.h>
#define LL long long
#define qy 100003
using namespace std;
LL m, n;
LL ksm(LL n, LL k){
if (!k) return 1;
LL sum = ksm(n, k >> 1);
sum = sum * sum % qy;
if (k & 1) sum = sum * n % qy;
return sum;
}
int main(){
scanf("%lld%lld", &m, &n);
m %= qy;
printf("%lld\n", (ksm(m, n) - m * ksm(m - 1, n - 1) % qy + qy) % qy);
return 0;
}