bzoj。1008: [HNOI2008]越狱(快速幂 组合数)
来源:互联网 发布:哪的java技术培训好 编辑:程序博客网 时间:2024/05/16 16:54
1008: [HNOI2008]越狱
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 10626 Solved: 4613
[Submit][Status][Discuss]
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)
Source
最简单的组合数了吧。。
不发生越狱的组合 Cm1 * C(m - 1)1 * ....* C(m - 1) 1。及 M * (M - 1) ^(n - 1)
发生越狱的组合 Cm1 * Cm1 *....* Cm1 M * M ^ (n - 1)
相减就完了
注意longlong
#include <iostream>#include <stdio.h>#include <string.h>#include <queue>#include <vector>#include <algorithm>using namespace std;const int maxn = 51550;const double esp = 1e-9;const int mod = 100003;long long pow(long long n, long long m) { long long res = 1, base = n; while (m) { if (m & 1) res *= base; res %= mod; base *= base; base %= mod; m >>= 1; } return res;}int main() { //freopen("in.txt", "r", stdin); long long n, m; cin >> m >> n; long long not_can = ::pow(m - 1, n - 1), can = ::pow(m, n - 1); long long ans = (can - not_can + mod) % mod; cout << (ans * m) % mod << endl;}
阅读全文
0 0
- bzoj。1008: [HNOI2008]越狱(快速幂 组合数)
- BZoj 1008: [HNOI2008]越狱 (快速幂)
- bzoj 1008 越狱 组合数+快速幂
- BZOJ 1008 HNOI2008 越狱 快速幂
- BZOJ 1008: [HNOI2008] 越狱 数学 快速幂
- [bzoj 1008] [HNOI2008]越狱:排列组合,快速幂
- BZOJ 1008: [HNOI2008]越狱 (快速幂
- BZOJ 1008 [HNOI2008]越狱 (组合数 简单公式)
- BZOJ 1008 [HNOI2008] 越狱(简单组合数学)
- HYSBZ/BZOJ 1008 [HNOI2008] 越狱 - 组合数学
- bzoj 1008: [HNOI2008]越狱 简单组合数学
- bzoj1008 [HNOI2008]越狱(组合数学+快速幂)
- 【快速幂、组合数学】BZOJ1008 [HNOI2008]越狱
- bzoj 1008: [HNOI2008]越狱
- [BZOJ 1008][HNOI2008]越狱
- [BZOJ 1008] [HNOI2008]越狱
- bzoj 1008: [HNOI2008]越狱
- bzoj 1008 [HNOI2008]越狱
- NOR型flash与NAND型flash的区别
- Mysql基本内容之DELETE和TRUNCATE的区别
- Python之enumerate函数
- 【裸K-D树】BZOJ 2648
- 凸包
- bzoj。1008: [HNOI2008]越狱(快速幂 组合数)
- Python 循环语句
- 我的学习记录51
- 11.30周四
- can't set headers after they are sent
- Unity移动平台优化
- selenium测试单选多选按钮
- 数据库连接池的好处
- 面向对象:希望遇到对的他,余生一起多多指教