BZOJ1008(快速幂)

1008: [HNOI2008]越狱
分析:显然我们知道总的情况数是\(m^n\),然后如果不存在相邻的情况为,第一个有m种选择,后面都有m-1种选择。所以存在相邻的相同的情况为
\(m^n-m \times (m-1)^{n-1}\)。因为数值比较大,这里需要运用快速幂

#include "bits/stdc++.h"
using namespace std;
typedef long long LL;
const LL mod=100003;
LL n,m;
LL quickmod(LL a,LL b){
    LL res=1;
    while(b){
        if(b&1) res=(res*a)%mod;
        a=(a*a)%mod;
        b>>=1;
    }
    return res%mod;
}
int main()
{
    scanf("%lld%lld",&m,&n);
    printf("%lld\n",(quickmod(m,n)-(m*quickmod(m-1,n-1)%mod)%mod+mod)%mod);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/gzgywh/p/12081854.html