欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

BZOJ1008(快速幂)

程序员文章站 2022-03-24 15:44:56
...

1008: [HNOI2008]越狱
分析:显然我们知道总的情况数是mnm^n,然后如果不存在相邻的情况为,第一个有m种选择,后面都有m-1种选择。所以存在相邻的相同的情况为
mnm×(m1)n1m^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;
}
相关标签: 快速幂 快速幂