题解-[HNOI2008]越狱

该博客介绍了[HNOI2008]越狱题目,包括题目描述、输入输出格式以及解题思路。博主分析了如何计算可能越狱的状态数,提出使用快速幂算法优化计算过程,降低时间复杂度。博客提供了部分代码实现,并讨论了快速幂算法的工作原理。
摘要由CSDN通过智能技术生成

题目描述

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

输入两个整数 M,N

输出格式

可能越狱的状态数,模 100003100003100003 取余
输入输出样例

输入 #1

2 3

输出 #1

6

说明/提示

6种状态为(000)(001)(011)(100)(110)(111)

1≤M≤1081 \le M \le 10^81≤M≤108
1≤N≤10121 \le N \le 10^{12}1≤N≤1012


题目分析

大致思路

将所有的方案数累计在一起,也就是m^n,再用所有的方案数减去我们选中的所有不能够逃脱的方案数相减,剩下的就是我们累积的方案数。

解析

取最左边的犯人,得该犯人可能信仰的宗教数量是m,素以不可能有方案数m×(m−1)^n−1, 那么就可以第一次有m个选择权,第二个有m-1种方案,第三个有m-1种方案,所以,以此类推,找出规律:m^n− m×(m−1)^n−1种方案,由于这个n的范围很大,所以我们只用快速幂来解决问题。

快速幂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值