花费了好长时间,终于刷掉了这道题。

题目在这里(洛谷)  (信息学奥赛一本通)

嗯,没错,这是一道快速幂的题,不会快速幂点这里

好现在开始分析,这道题用小学奥数的思想就可以想到,直接算有多少种可能比较难,所以就算出所有的情况再减去不越狱的情况,就是越狱的情况了。所有情况就是mn,不发生的情况就是m*(m-1)(n-1),所以,发生的情况就是mn-m*(m-1)(n-1)

然后就成功的算出了发生的情况数。

代码如下

 #include<iostream>
#define LL long long //下面LL可以代替long long
using namespace std;
LL m, n, mod=;
LL power(LL a, LL b){
int ans=, base=a;
while (b != ){
if (b& == ) ans=(ans*base)%mod; //b&1==1 = b%2==1
base=(base*base)%mod;
b>>=;
}
return ans;
}
int main()
{
cin>>m>>n;
cout<<power(m, n)-((m%mod)*power(m-, n-)%mod+mod)%mod<<endl; //公式
return ;
}

这个代码样例是可以过去的,but只有10分,我也不知道为啥。

但是根据对输出的分析,我给快速幂多mod了几下,竟然AC啦…

所以看下面,AC代码

 #include<iostream>
#define LL long long
using namespace std;
LL m, n, mod=;
LL power(LL a, LL b){
int ans=, base=a;
while (b != ){
if ((b&) == ) ans=(ans%mod)*(base%mod)%mod;
base=(base%mod)*(base%mod)%mod;
b>>=;
}
return ans;
}
int main()
{
cin>>m>>n;
cout<<(power(m, n)-(m*power(m-, n-))%mod+mod)%mod<<endl;
return ;
}

P3197越狱的更多相关文章

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

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

  2. bzoj1008 / P3197 [HNOI2008]越狱

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

  3. 洛谷P3197 HNOI2008 越狱

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

  4. 洛谷 P3197 [HNOI2008]越狱 题解

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

  5. 【洛谷P3197】越狱

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

  6. P3197 [HNOI2008]越狱

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

  7. P3197 [HNOI2008]越狱[组合数学]

    题目来源:洛谷 题目描述 监狱有连续编号为 1…N 的 N 个房间,每个房间关押一个犯人,有 M 种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生 ...

  8. luogu P3197 [HNOI2008]越狱

    构造长度为n的串,给定m种颜色,求使得相邻两位的颜色相同的方案数 显然可以看出长度为n的串染m种颜色的总方案数为$m^{n}$ 然后来考虑相邻两位颜色不同的方案 对于第一位,有m种选择 对于剩余的n- ...

  9. 「HNOI2008」「LuoguP3197」越狱(数论

    题目描述 原题来自:HNOI 2008 监狱有连续编号为 111 到 nnn 的 nnn 个房间,每个房间关押一个犯人.有 mmm 种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人信仰的宗教相同, ...

随机推荐

  1. HDU2389:Rain on your Parade(二分图最大匹配+HK算法)

    Rain on your Parade Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 655350/165535 K (Java/Ot ...

  2. Java 中request.getInputStream()和BufferedReader 和 InputStreamReader 用法

    关于request.getInputStream(): http://www.cnblogs.com/steve-cnblogs/articles/5420198.html 浏览器 采用了一种编码方式 ...

  3. 证明spring中<property name="">这个双引号的内容只与setter方法有关,与一个类定义的字段和getter方法无关

    证明如下: 思路定义两个实体类每个实体类的成员变量(字段)名和setter 和getter的名字都不一样: 原因是:bean的声明周期的原因:有一步是:注入属性. 其中一个类引用了另一个类. 被引用类 ...

  4. bzoj 2304 [Apio2011]寻路 Dij+模拟+恶心建图

    [Apio2011]寻路 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 624  Solved: 193[Submit][Status][Discus ...

  5. java.sql.Date和java.util.Date的不同和相互转换方式

    一:前言 这是我在新的公司写的第一份博客吧,来了又一个星期了吧,但是在来的那几天我真的很迷茫的感觉这里是很不适合我的样子,而且我又是来实习的,我很不愿意啊,自己做的又是java web,最原始的ser ...

  6. 【LibreOJ】【LOJ】#6217. 扑克牌

    [题意]给定一叠n张扑克牌和各自的ai,bi.每次可以从最上面拿走连续atop张并获得btop的价值,或是把top放到最底,求最大价值. [算法]背包DP [题解]本题最大的特点:atop的需求与牌的 ...

  7. autoKeras入门

    测试本地mnist数据集 图片只用500张,450张做train与50张test, 代码如下: # conding:utf-8 import os os.environ[' import numpy ...

  8. Linux+Python高端运维班第六周作业

    1.复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#:         [root@localhost tm ...

  9. Swift开发学习(二):Playground

    http://blog.csdn.net/powerlly/article/details/29674253 Swift开发学习:Playground 关于 对于软件用户.游戏玩家,大家一直都在提倡用 ...

  10. /usr/bin/expect介绍

    /usr/bin/expect介绍 http://blog.csdn.net/zhu_tianwei/article/details/44180637 概述 我们通过Shell可以实现简单的控制流功能 ...