思路
看了很久没思路,看了题解发现自己好zz。用全部的情况减去不合法的情况就行了。全部的情况就是每个人随便选,总共有\(m^n\)种情况,然后考虑不合法的情况,也就是任意相邻的两个人不能信仰同一宗教,第一个人有m个宗教可以选,后面的每个人因为都不能和前面那个人相同,所以后面的每个人有m-1个宗教可以选。所以最终答案就是\(m^n-m*(m-1)^{n-1}\)
代码
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
const int mod=100003;
ll read() {
ll x=0, tmp=1;
char ch=getchar();
//wxywwwwwwwwwwwwwwwwwwww
while( (ch<'0') || (ch>'9') ){
if(ch=='-')tmp=-1; ch=getchar();}
while( (ch>='0')&&(ch<='9') ){
x=x*10+ch-'0';ch=getchar();
}//wxywwwwwwwwwwwwwwww
return (x*tmp);
}
ll qmi(ll x,ll y) {
ll ans=1;
ll now=x;
while(y) {
if(y&1) ans=ans*now%mod;
now=now*now%mod;
y>>=1;
}
return ans;
}
int main() {
ll m=read();
ll n=read();
cout<<(qmi(m,n)%mod-qmi(m-1,n-1)*m%mod+mod)%mod;
return 0;
}