(快速幂) luogu P3197 [HNOI2008]越狱

作者: 不给赞就别想跑哼 | 来源:发表于2018-10-08 20:22 被阅读0次

    若没了解过快速幂,请移至第数论第一篇题解 快速幂模板

    题目描述
    监狱有连续编号为 1…N1…N 的 N 个房间,每个房间关押一个犯人,有 M 种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱。

    输入输出格式
    输入格式:
    输入两个整数 M,N
    输出格式:
    可能越狱的状态数,模 100003 取余

    直接计算可能越狱的情况数很困难,所以我们转换思路,先求出所有的情况,再求出不可能的情况,相减即是可能的情况。。

    有n个监狱,m种选择,总方案数便是mn,第一间监狱有m种方案,第二件因为不能和第一间一样则第二间的方案数为m-1,第三件不能和第二间一样,则也有m-1种,以此类推,故不可能的情况数为m(m-1)(n-1);

    故答案为mn-m(m-1)(n-1);

    该快速幂上场表演了!!

    代码如下

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #define LL long long
    #include<algorithm>
    using namespace std;
    LL n,m,mod=100003;
    LL quickPow(LL a,LL b){
        LL sum=1;
        while(b){
            if(b&1) sum=sum*a%mod;
            b>>=1;
            a=a*a%mod;
        }
        return sum;
    }
    int main(){
        scanf("%lld%lld",&m,&n);
        LL ans1=quickPow(m,n),ans2=(m%mod*quickPow(m-1,n-1))%mod;
        LL ans=ans1-ans2;
        if(ans<0) ans+=mod;
        printf("%lld\n",ans%mod);
        return 0;
    }
    

    关注点一点,活到九十九!!!谢谢啦!!!

    相关文章

      网友评论

        本文标题:(快速幂) luogu P3197 [HNOI2008]越狱

        本文链接:https://www.haomeiwen.com/subject/dwajaftx.html