总算把数学题A掉了。。思路清晰莫名wa掉。。还得多提高自己代码水平。。


Description

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

Input

  输入两个整数M,N.1<=M<=10^8,1<=N<=10^12

Output

  可能越狱的状态数,模100003取余

Sample Input

2 3

Sample Output

6

HINT

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


我们可以先考虑总共有多少道排列方式, 由于n个位置,每个位置有m中宗教,所以根据乘法原理,一共有m^n 种取法。
然后我们再考虑不会越狱的情况,这样我们只要保证当前这一个与前面一个不同就可以了,所以不会越狱的情况有m* (m-1)^(n-1)种取法。
所以很容易得到答案就是m^n - m* (m-1)^(n-1) 。
上代码

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cstring>
 5 #include <vector>
 6 #define ll long long
 7 #define Max 2147483640
 8 #define P 100003
 9 using namespace std;
10 ll read()
11 {
12     char ch=getchar();ll kin=1,si=0;
13     while(ch>'9'||ch<'0'){if(ch=='-')kin=-1;ch=getchar();}
14     while(ch>='0'&&ch<='9'){si=si*10+ch-48;ch=getchar();}
15     return si*kin;
16 }
17 ll n,m;
18 ll mi(ll,ll,ll);
19 int main()
20 {
21     m=read();n=read();
22     cout<<(mi(m,n,P)-(m%P*mi(m-1,n-1,P))%P+P)%P;//这里要注意加上P再模,因为可能m^n%P以后小于后者(我之前就是错了这里
23     cout<<endl;
24     return 0;
25 }
26 ll mi(ll x,ll y,ll z)
27 {
28     ll tot=1;
29     x%=z;
30     while(y)
31     {
32         if(y%2==1)tot=(tot%z*x%z)%z;
33         y>>=1;
34         x=(x%z*x%z)%z;
35     }
36     return tot;
37 }

转载于:https://www.cnblogs.com/Zn-H/p/6411603.html

[bzoj1008][HNOI2008]越狱-题解[简单组合数学]相关推荐

  1. bzoj1008: [HNOI2008]越狱

    1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 7777  Solved: 3331 [Submit][Statu ...

  2. BZOJ1008[HNOI2008]越狱

    @[排列組合] Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果 相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态 ...

  3. BZOJ1008: [HNOI2008]越狱(组合数)

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

  4. [bzoj1008] [HNOI2008]越狱

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

  5. BZOJ 1008 [HNOI2008]越狱

    1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 5166  Solved: 2242 [Submit][Statu ...

  6. 1008: [HNOI2008]越狱(计数问题)

    1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 11361  Solved: 4914 [Submit][Stat ...

  7. bzoj 1008: [HNOI2008]越狱

    1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 6235  Solved: 2658 [Submit][Statu ...

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

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

  9. P3197 [HNOI2008]越狱(快速幂)

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

最新文章

  1. bcache状态和配置文件详细介绍(翻译自官网)
  2. Python是如何一步步成为热门编程语言的?
  3. 受小动物大脑结构启发,研究人员开发出新的深度学习模型:更少神经元,更多智能...
  4. Eclipse安装Jetty插件(Web容器)
  5. jmeter性能测试报告_用 JMeter 做接口测试的优劣浅析
  6. 俄罗斯方块-C语言-详注版
  7. CentOS 安装MySQL5.7 源码方式安装
  8. oc总结 --oc基础语法相关知识
  9. 创建多模块springcloud应用eureka server和client和消费端demo
  10. H264编解码算法在网络视频传输中的应用
  11. [转载][路由器] k2p支持ipv6相关设置
  12. Microsemi Libero使用技巧3——使用FlashPro单独下载程序
  13. c语言题目tcl是什么意思,TCL语言简述
  14. 腾讯会议分享屏幕,隐藏演讲者模式
  15. 不用爬虫,也能写一个聚合搜索引擎
  16. mysql sphinx windows安装_window下安装sphinx实例
  17. Mose机器翻译Ubuntu18配置和遇到的问题
  18. 3dmax建模如何设置凹凸贴图
  19. Json和List互相转化
  20. 解决Linux服务器中TCP的FIN_WAIT2,CLOSE_WAIT状态连接过多的问题

热门文章

  1. 谈一下ACM的入门书籍及方法
  2. mysql choose when_可以使用choose,一个when 和 otherwise 来实现if-else判断_学小易找答案...
  3. web myeclipse为什么连接不上css_Web技巧 (03)
  4. 中科研研究生:从算法工程师转行产品经理之后
  5. Python自然语言处理相,新词发现,主题模型,隐马尔模型词性标注,Word2Vec,情感分析...
  6. 深度学习训练和推理有何不同?
  7. 海量中文语料上预训练ALBERT模型:参数更少,效果更好
  8. 常见面试算法:朴素贝叶斯
  9. python数据分析师工资待遇_预测python数据分析师的工资
  10. android平台的计时功能,Android实现简单计时器功能