0
点赞
收藏
分享

微信扫一扫

【HNOI2009】【BZOJ1008】越狱(组合,方案数,水题)


problem

  • 有N个监狱(每个监狱一个犯人),编号1~N; 每个犯人有1种宗教信仰,编号1~M。
  • 相邻房间的人如果信仰相同,就会越狱。
  • 求可能发生越狱的方案数%100003。

solution

一、题解

  • 考虑用总方案数减去不会越狱的方案数:
  • 有m种信仰,n个监狱,那么总共有m^n的种方案数

【HNOI2009】【BZOJ1008】越狱(组合,方案数,水题)_#define

二、注意:

  • 最后快速幂复杂度logn可水。
  • 以及,记得开long long。
  • 直接减有可能出现负数,所以得加上一个mod再减。

codes

#include<iostream>
#define mod 100003
using namespace std;
typedef long long LL;
LL pow(LL a, LL b){
    if(!b)return 1;
    LL t = pow(a, b/2)%mod;
    return b%2==0 ? t*t%mod : t*t*a%mod;
}
int main(){
    LL m, n;  cin>>m>>n;
    cout<<(pow(m,n)%mod-m*pow(m-1,n-1)%mod+mod)%mod<<"\n";
    return 0;
}


举报

相关推荐

0 条评论