BZOJ1008 [HNOI2008]越狱
来源:互联网 发布:苹果 app 办公软件 编辑:程序博客网 时间:2024/06/16 08:14
1008: [HNOI2008]越狱
Time Limit: 1 Sec Memory Limit: 162 MB
Submit: 5846 Solved: 2494
[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
【思路】
数学+快速幂。
一共有m^n中情况,去掉其中任意相邻两个都相等的情况:m*(m-1)^(n-1)即为解。
需要注意的是ans=m^n-m*(m-1)^(n-1),ans如果为负则加MOD直到为正。
【代码】
1 #include<iostream> 2 using namespace std; 3 4 const int MOD=100003; 5 typedef long long LL; 6 LL n,m; 7 8 inline LL pow(LL x,LL p) { 9 LL tmp=x,ans=1;10 while(p) {11 if(p&1) ans=(ans*tmp)%MOD;12 tmp=(tmp*tmp)%MOD;13 p>>=1;14 }15 return ans;16 }17 18 int main() {19 cin>>m>>n;20 LL ans;21 LL a1=pow(m,n),a2=pow(m-1,n-1);22 ans=(a1-m*a2 +MOD) %MOD;23 while(ans<0) ans += MOD;24 cout<<ans; 25 return 0;26 }
0 0
- BZOJ1008:[HNOI2008]越狱
- [Bzoj1008][HNOI2008]越狱
- bzoj1008[HNOI2008]越狱
- bzoj1008: [HNOI2008]越狱 数学
- [BZOJ1008][HNOI2008]越狱
- [组合]Bzoj1008 越狱[HNOI2008]
- BZOJ1008[HNOI2008]越狱
- bzoj1008[HNOI2008]越狱
- bzoj1008 [HNOI2008]越狱
- 【HNOI2008】【BZOJ1008】越狱
- BZOJ1008: [HNOI2008]越狱
- BZOJ1008 [HNOI2008]越狱
- bzoj1008: [HNOI2008]越狱
- 越狱[HNOI2008,bzoj1008]
- [bzoj1008][HNOI2008]越狱
- 7.29 bzoj1008 [HNOI2008]越狱
- [BZOJ1008][HNOI2008]越狱
- 【bzoj1008】[HNOI2008]越狱
- vijosP1371 方程的解
- vijosP1388 二叉树数
- vijosP1687 细菌总数
- 自定义ZbarView
- vijosP1629 八
- BZOJ1008 [HNOI2008]越狱
- 洛谷1349 广义斐波那契数列 【矩阵乘法】
- 洛谷1076 寻宝
- BZOJ2705 [SDOI2012]Longge的问题
- 洛谷P1407 工资
- Spring MVC系列(一)之Hello World
- 洛谷1775 古代人的难题
- PHP性能优化
- 穷举法