【bzoj 1008】 越狱
来源:互联网 发布:raptor汉化版软件 编辑:程序博客网 时间:2024/04/30 03:40
转自:http://blog.csdn.net/flere825
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)
这个题的主要思路是用所有方案数-不合法方案数得到合法方案数。
这个思路我真心想不出来啊,大概是我太弱了吧,以后要多加练习。
所有方案数计算如下图
即m^n
不合法方案数如下(第一个位置可以有m个宗教,影响一个位置的只有前一个位置,所以后面都是m-1
即m*(m-1)^(n-1)
答案就是两数相减,快速幂优化。
注意long long。
#include <bits/stdc++.h>using namespace std;const int p = 100003;typedef long long ll;ll pow(ll x, ll y){ ll a = x, ans = 1; while(y){ if(y&1) ans *= a, ans %= p; a *= a, a %= p; y >>= 1; } return ans;}int main(){ ll n, m; scanf("%lld%lld", &m, &n); m %= p; ll ans = pow(m, n); ans -= pow(m-1,n-1)*m; ans = ((ans%p)+p)%p; printf("%lld", ans); return 0;}
1 0
- bzoj 1008: [HNOI2008]越狱
- [BZOJ 1008][HNOI2008]越狱
- [BZOJ 1008] [HNOI2008]越狱
- BZOJ 1008 越狱
- bzoj 1008: [HNOI2008]越狱
- 【BZOJ】1008 越狱
- bzoj 1008 [HNOI2008]越狱
- BZOJ 1008 越狱
- BZOJ 1008: [HNOI2008]越狱
- BZOJ 1008 [HNOI2008]越狱
- 【bzoj 1008】 越狱
- BZOJ[1008]越狱
- BZOJ 1008 [HNOI2008] 越狱
- BZOJ 1008 [HNOI2008] 越狱
- BZOJ 1008 越狱 【数论】
- 【BZOJ 1008】[HNOI2008]越狱
- 【BZOJ】1008: [HNOI2008]越狱
- BZOJ 1008 [HNOI2008] 越狱
- 运用@Transactional,自己抛出异常时不会回滚的原因
- CString截取字符串全攻略
- iOS 关于navigationBar的一些:毛玻璃、透明、动态缩放、动态隐藏
- 简单导航item自定义封装
- android 国产手机6.0适配(小米)
- 【bzoj 1008】 越狱
- 基于安卓的rndis驱动的usb网络共享的实现
- 音乐播放器类的Android项目源码
- 默认和静态接口方法(lumbda对对象进行排序)
- nil、Nil、NULL、NSNull
- no_console_suspend
- 带权图的最小生成树
- C++设计模式之单例模式
- 【转】oracle数据泵、表空间、库导入导出