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]越狱 题解的更多相关文章

  1. 洛谷 P3197 [HNOI2008]越狱 解题报告

    P3197 [HNOI2008]越狱 题目描述 监狱有连续编号为\(1-N\)的\(N\)个房间,每个房间关押一个犯人,有\(M\)种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可 ...

  2. 洛谷P3197 HNOI2008 越狱

    题目传送门 实际上昨天大鸡哥已经讲过这题了,结果没记住,今天一道相似的题就挂了......吃一堑长一智啊. 思路大致是这样:如果直接算发生越狱的情况会比较复杂,所以可以用间接法,用安排的总方案-不会发 ...

  3. 【洛谷P3197】越狱

    本来还想了一会dp-- 然而一看数据范围明显是数论-- 那么推一推.. 我们发现可以用总方案数减去不会越狱的方案数 那么我们考虑在长度为n的数列中填数 首先第一个位置有m种选择,后面的位置: 总方案: ...

  4. 洛谷3197&bzoj1008 越狱

    洛谷3197&bzoj1008 越狱 Luogu bzoj 题解 所有状态减合法状态.SBT 答案为\(m^n-m*(m-1)^{n-1}\)太SB不解释 注意取膜的问题.相减可能减出负数,而 ...

  5. 洛谷P2832 行路难 分析+题解代码【玄学最短路】

    洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...

  6. 【洛谷P3960】列队题解

    [洛谷P3960]列队题解 题目链接 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m ...

  7. bzoj1008 / P3197 [HNOI2008]越狱

    P3197 [HNOI2008]越狱 考虑所有状况:显然是$m^{n}$ 考虑所有不合法状况: 显然相邻两个数不相等 那么后面$n-1$个数就有$(m-1)^{n-1}$种取法 第一个数前面没有相邻的 ...

  8. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

  9. 洛谷P1577 切绳子题解

    洛谷P1577 切绳子题解 题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2为后的小数). 输入输出格 ...

随机推荐

  1. 【题解】Luogu P5341 [TJOI2019]甲苯先生和大中锋的字符串

    原题传送门 实际按照题意模拟就行 我们先求出字符串的sa 因为要在字符串中出现k次,所以我们枚举\(l,r(r-l+1=k)\)看一共有多少种合法的方案 合法方案的长度下界\(lb\)为\(Max(h ...

  2. .NET core Quartz 定时任务框架 demo

    开始先建个空的web项目. 创建一个新类 QuartzFactory 狠狠的复制就完事了. public class QuartzFactory : IJobFactory { private rea ...

  3. ServiceStack JWT 准备

    ServiceStack JWT设置 ServcieStack 自带的验证授权模块使用 sql server存储,所以我们第一步需要配置数据库的一些选项 container.Register<I ...

  4. flask与Flask-CORS的使用

    flask与Flask-CORS的使用 一.安装 pip install flask-cors 二.使用 # 文件:manage.py from flask_cors import CORS from ...

  5. JVM性能优化--JVM参数配置,使用JMeter简单测试配合说明参数调优

    一.JVM参数配置 1.常见参数配置 -XX:+PrintGC 每次触发GC的时候打印相关日志 -XX:+UseSerialGC 串行回收 -XX:+PrintGCDetails 更详细的GC日志 - ...

  6. TCP连接与断开

    两台宿主机 一台:作为服务器 另一台:作为客户端 服务器的步骤: 打开[控制面板]----点击[程序]---点击程序和功能中[打开或关闭Windows功能]---点击[Telnet服务器]--点击[确 ...

  7. Android为TV端助力之无法依赖constraint-layout:1.1.3(转发)

    原文地址 http://fanjiajia.cn/2018/09/25/Android%20Studio%20Could%20not%20resolve%20com.android.support.c ...

  8. httpclient工具类,post请求发送json字符串参数,中文乱码处理

    在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码的.可是在使用httpclient发送post请求报文含中文 ...

  9. oracle 11g goldengate搭建(一)

    初学ogg,基本了解ogg原理及架构之后,趁热打铁,搭建一个简单的学习环境,以实现目标:将sourcedb数据库的2个表:sourceuser.test01和sourceuser.dept通过ogg分 ...

  10. oracle instantclient_12_2安装

    下载地址 http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index ...