BZOJ 1008 [HNOI2008]越狱

来源:互联网 发布:java核心编程 pdf下载 编辑:程序博客网 时间:2024/04/30 05:42

越狱的方案数难算,不越狱的方案数好算。直接将总方案数减去不越狱方案数即可。

·总方案数:m^n
·不越狱方案数:m*(m-1)^(n-1) (除了第一个监狱,其它的监狱都只能取与前一个监狱不同的宗教,即m-1种)

快速幂+取模。

#include<cstdio>#define MOD 100003long long fpow(long long base, long long p){    long long r=1;    while(p)    {        if(p&1)            r*=base;        r%=MOD;        base*=base;        base%=MOD;        p>>=1;    }    return r;}int main(){    long long m, n;    scanf("%lld%lld",&m,&n);    long long f1=fpow(m,n);    long long f2=fpow(m-1,n-1);    f2*=m;    f2%=MOD;    printf("%lld",(f1-f2+MOD)%MOD);    return 0;}
1 0