这题容易多想。其实就是一个简单且直观的想法。
所有的情况:每个房间都有m种选择,所以n个房间就是m^n种情况。
无人越狱的情况:相邻房间不同即可,第一个房间有m种选择,后面的由于不能与相邻的相同,只有m-1种选择,所以方案是m*(m-1)^(n-1)。
只需用总方案减去不可行的方案即可。
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const LL mod=100003;
LL qkpow(LL a,LL k)
{
LL s=1;
while(k)
{
if(k%2) s=s*a%mod;
a=a*a%mod;
k>>=1;
}
return s;
}
int main()
{
LL M,N;
cin>>M>>N;
LL t=qkpow(M,N),t2=M%mod*qkpow(M-1,N-1)%mod;
cout<<(t-t2+mod)%mod;
return 0;
}