【组合数学】[HNOI2008][HYSBZ/BZOJ1008]越狱
题目链接
分析
题目问的是可能越狱的状态数
状态数总的状态数-不可能越狱的状态数=可能越狱的状态数。
每个人可能信仰m种宗教的任何一种,所以一共有
不可能越狱的状态:第i(i>1)个人不能和第i-1个人信仰一样的宗教, 所以只有m-1种选择,有
用快速幂计算即可。
代码
#include<cstdio>
#define MOD 100003
int m;
long long n;
int quick_pow(int a,long long b){
int ret=1;
while(b){
if(b&1)
ret=1ll*ret*a%MOD;
a=1ll*a*a%MOD;
b>>=1;
}
return ret;
}
template<class T>
void Read(T &x){
char c;
while(c=getchar(),c!=EOF)
if(c>='0'&&c<='9'){
x=c-'0';
while(c=getchar(),c>='0'&&c<='9')
x=x*10+c-'0';
ungetc(c,stdin);
return;
}
}
int main()
{
Read(m),Read(n);
printf("%lld",((quick_pow(m%MOD,n)-1ll*m%MOD*quick_pow((m-1)%MOD,n-1))%MOD+MOD)%MOD);
}