其实这题很水,显然n个房间有m种宗教,总共有n^m种情况,
我们再考虑不合法的情况,显然第一个房间有m种情况,而后一种只有m-1种情况(因为不能相同)
所以不合法的情况有(m-1)^(n-1)*m种情况,相减即是答案。
注意一下实现的细节,由于n和m可能很大,模运算时要注意一下(血的教训)
# include<iostream> # include<cstdio> # include<cmath> using namespace std; const long long mod = 100003; typedef long long LL; LL qpow(LL a,LL b) { if(b==0) return 1; LL ans=1,base=a; while(b) { if(b&1) ans=(ans%mod)*(base%mod)%mod; base=(base%mod*base%mod)%mod; b>>=1; } return ans%mod; } int main() { LL n,m,ans; cin>>m>>n; ans=qpow(m,n); ans=(ans-((qpow(m-1,n-1)%mod)*(m%mod)%mod)+mod)%mod; cout<<ans; return 0; }