首页 > 其他 > 详细

BZOJ1008(快速幂)

时间:2019-12-23 09:41:30      阅读:77      评论:0      收藏:0      [点我收藏+]

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;
}

BZOJ1008(快速幂)

原文:https://www.cnblogs.com/gzgywh/p/12081854.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!