题目传送门sxazr
先不考虑越狱 ,n个犯人,有m种宗教,则共有m^n种组合;
把不能越狱的组合减去就好了;
第一个人有m种宗教选择,第二个人就必须在剩下的m-1种里选一种;
第三个人呢,因为第二个人选了一种宗教,那么他也是在剩下的m-1种里选一种,
只要保证相邻的两个不一样就可以嘛,则有m*(m-1)^(n-1);
可以越狱的就有m^n -m*(m-1)^(n-1);
快速幂
代码
#include <iostream>
#include <cstdio>
#define LL long long
using namespace std;
LL n,m;
const LL MOD=100003;
LL zr(LL x,LL y)
{
LL tmp=1;
while(y){
if(y%2) tmp=tmp*x%MOD;
x=x*x%MOD;
y/=2;
}
return tmp;
}
int main()
{
cin>>m>>n;
LL t=zr(m,n)-m*zr(m-1,n-1);
while(t<0) t+=MOD;
cout<<t%MOD;
return 0;
}