洛谷 P3197 [HNOI2008]越狱 题解
P3197 [HNOI2008]越狱
题目描述
监狱有连续编号为 \(1…N\) 的 \(N\) 个房间,每个房间关押一个犯人,有 \(M\) 种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱。
输入格式
输入两个整数 \(M,N\)
输出格式
可能越狱的状态数,模 \(100003\) 取余
输入输出样例
输入 #1
2 3
输出 #1
6
说明/提示
6种状态为(000)(001)(011)(100)(110)(111)
\(1 \le M \le 10^8\)
\(1 \le N \le 10^{12}\)
【思路】
组合数学 + 快速幂
【题目大意】
n个房间里面都有犯人,他们信仰m种不同的宗教
求有至少一对信仰相同宗教的人挨在一起的情况
【核心思路】
正着求是很难求或者是没有办法求的
所以正难则反
没法直接求出来越狱的情况
那就求出总的情况和不越狱的情况
用总的情况减去不越狱的情况
就是题目要求我们求的越狱的情况
总的情况
每一个房间都有m中可能,一共有n个房间
所以可能性是m^n次方
总的情况就知道了
然后看不会越狱的情况
第一个房间可以有m中选择
第二个房间不能和第一个房间的宗教一样‘
所以只有m-1中可能
第三个也是和第二个一样
所以出现了一个m和n-1个m-1
那么不会越狱的情况就是m*(m-1)^(n-1)
知道了这两个
一做差就可以求出来会越狱的情况了
【小细节】
幂运算很大需要用快速幂
【完整代码】
#include<iostream>
#include<cstdio>
#define int long long
using namespace std;
const int mo = 100003;
int p(int a,int b)
{
int ans = 1;
while(b != 0)
{
if(b & 1 == 1)
{
ans *= a;
ans %= mo;
}
b /= 2;
a = ((a % mo) * (a % mo)) % mo;
}
return ans;
}
signed main()
{
int n,m;
cin >> m >> n;
cout << ((p(m,n) % mo - (m * p(m - 1,n - 1)))%mo + mo ) % mo;//先做减法,因为减法之后可能出现负数,但是这个负数的绝对值一定会小于m的 ,因为这是两个已经%过m的数,保证小于m所以做的差的绝对值也一定小于m,只需要将这个可能是服饰的数加上mo保证是正数之后再%一遍mo
return 0;
}
洛谷 P3197 [HNOI2008]越狱 题解的更多相关文章
- 洛谷 P3197 [HNOI2008]越狱 解题报告
P3197 [HNOI2008]越狱 题目描述 监狱有连续编号为\(1-N\)的\(N\)个房间,每个房间关押一个犯人,有\(M\)种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可 ...
- 洛谷P3197 HNOI2008 越狱
题目传送门 实际上昨天大鸡哥已经讲过这题了,结果没记住,今天一道相似的题就挂了......吃一堑长一智啊. 思路大致是这样:如果直接算发生越狱的情况会比较复杂,所以可以用间接法,用安排的总方案-不会发 ...
- 【洛谷P3197】越狱
本来还想了一会dp-- 然而一看数据范围明显是数论-- 那么推一推.. 我们发现可以用总方案数减去不会越狱的方案数 那么我们考虑在长度为n的数列中填数 首先第一个位置有m种选择,后面的位置: 总方案: ...
- 洛谷3197&bzoj1008 越狱
洛谷3197&bzoj1008 越狱 Luogu bzoj 题解 所有状态减合法状态.SBT 答案为\(m^n-m*(m-1)^{n-1}\)太SB不解释 注意取膜的问题.相减可能减出负数,而 ...
- 洛谷P2832 行路难 分析+题解代码【玄学最短路】
洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...
- 【洛谷P3960】列队题解
[洛谷P3960]列队题解 题目链接 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m ...
- bzoj1008 / P3197 [HNOI2008]越狱
P3197 [HNOI2008]越狱 考虑所有状况:显然是$m^{n}$ 考虑所有不合法状况: 显然相邻两个数不相等 那么后面$n-1$个数就有$(m-1)^{n-1}$种取法 第一个数前面没有相邻的 ...
- 洛谷P2312 解方程题解
洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...
- 洛谷P1577 切绳子题解
洛谷P1577 切绳子题解 题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2为后的小数). 输入输出格 ...
随机推荐
- 创建包含CRUD操作的Web API接口4:实现Put方法
本节教程是前三节的延续,在前面我们创建了Web API和必要的基础设施,也实现了Get和Post方法.接下来,我们将在Web API中实现Put方法. RESTful架构中,HTTP PUT方法用于在 ...
- ElasticSearch动态修改副本个数
创建只有 一个主分片,没有副本的小索引: PUT /my_temp_index{ "settings": { "number_of_shards" : 1, & ...
- 新安装jenkins要记录的点。
突然很早之前部署的jenkins 由于版本低存在漏洞,被人搞了,在docker中新安装jenkins出现了各种问题,避免跳坑. 不能正确安装插件, Jenkins -> Plugin Manag ...
- ABP 结合 MongoDB 集成依赖注入
1.我们再ABP项目添加一个.NET Core类库 类库名自定定义, 我这里定义为 TexHong_EMWX.MongoDb 添加NuGet包. ABP mongocsharpdriver 添加 A ...
- 2019 映客直播java面试笔试题 (含面试题解析)
本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.映客直播等公司offer,岗位是Java后端开发,最终选择去了映客直播. 面试了很多家公司,感觉大部分公司考察的点 ...
- 最全的 pip 使用指南,50% 你可能没用过
所有的 Python 开发者都清楚,Python 之所以如此受欢迎,能够在众多高级语言中,脱颖而出,除了语法简单,上手容易之外,更多还要归功于 Python 生态的完备,有数以万计的 Python 爱 ...
- 解除Ubuntu系统的root登录图形界面限制
Ubuntu18.04.1开发团队为了Ubuntu18.04.1系统的安全,默认root不能登录图形界面,普通用户需要使用root权限时,只能通过sudo [命令] [参数] 临时使用root权限,或 ...
- shell 遍历目录下的所有文件
dir=/usr/local/nginx/logs for file in $dir/*; do echo $file done //结果 ./test.sh /usr/local/nginx/log ...
- MySQL中的JSON类型
前言(废话) 昨天抽了点时间在网上搜列了一个开源项目,项目挺完整的,前后台分离还带有微信小程序,我Clone下代码,经过一番倒腾,嘿~还真就跑起来了.在这个过程中,体验了一把VUE项目工程细节,因为之 ...
- python day 21: HTML的基本元素及CSS
目录 python day 21 1. HTML 1.1 常见的HTML元素 python day 21 2019/11/02 学习资料来自老男孩与尚学堂 1. HTML 1.1 常见的HTML元素 ...