题目:
题解:
首先算出所有排列的可能性
a
n
s
1
ans1
ans1 =
m
n
m^n
mn%mod
再算出不会越狱的情况 a n s 2 ans2 ans2 = m ∗ ( m − 1 ) ( n − 1 ) m*(m-1)^{(n-1)} m∗(m−1)(n−1)%mod
则 a n s ans ans = ( a n s 1 − a n 2 + m o d ) (ans1-an2+mod) (ans1−an2+mod) %mod (为了避免负数)
#include <bits/stdc++.h>
using namespace std;
long long mod=100003;
long long pri(long long a,long long b)
{
long long ans=1;
while(b)
{
if(b&1) ans=ans*a%mod;
a=a*a%mod;
b>>=1;
}
return ans;
}
int main()
{
long long m,n;
cin>>m>>n;
long long ans1=pri(m,n)%mod;
long long ans2=m*pri(m-1,n-1)%mod;
long long ans=(ans1-ans2+mod)%mod;
cout<<ans<<endl;
return 0;
}