[BZOJ 1008] HNOI 2008 越狱 · 快速幂
2015-03-12 22:31
323 查看
刚开始做这道题的时候,笔者朝着类似全排列的方向思考,想直接求出答案,发现通项会很繁琐,然后再反过来思考一下,即越狱方案数=总方案数-未越狱方案数,突然就发现这题是如此之水……如果你做这题的时候感觉有点困难,不要灰心,答案公式是很容易推出来的,如果实在还是不会的话题解在代码中。
/* 当直接推通项很繁琐的时候,试着换一种思路。 总共有N个人,每个人有M种可能,所以总方案数=M^N 若要满足每两个相邻的人都不相同, 第一个人有M种选择,接下来的N-1个人,每一个人都有M-1种选择,即和前一个人不同 。 所以未越狱方案数=(M-1)^(N-1)*M 那么越狱方案数=M^N-(M-1)^(N-1)*M,快速幂直接0ms水过去:D */ #include <stdio.h> using namespace std; #define ll long long #define p 100003 ll n,m,ans; ll power(ll t,ll k){ if (t==1) return k%p; ll x=power(t>>1,k); x=x*x%p; if ((t>>1)*2!=t) x=x*k%p; return x; } int main(){ scanf("%lld %lld",&m,&n); ans=(power(n,m)%p-m%p*power(n-1,m-1)%p)%p; while (ans<0) ans+=p; printf("%lld\n",ans); return 0; }
相关文章推荐
- BZOJ 1008: [HNOI2008]越狱 (快速幂
- BZOJ 1008 HNOI2008 越狱 快速幂
- 【快速幂、组合数学】BZOJ1008 [HNOI2008]越狱
- 【BZOJ1008】【HNOI2008】越狱 排除法+快速幂
- BZOJ 1008: [HNOI2008] 越狱 数学 快速幂
- bzoj1008: [HNOI2008]越狱(快速幂)
- BZOJ 1008 - HNOI 2008 越狱 乘法原理 快速幂
- BZOJ1008: [HNOI2008]越狱 快速幂
- bzoj。1008: [HNOI2008]越狱(快速幂 组合数)
- 【BZOJ1008】越狱(HNOI2008)-快速幂
- [bzoj 1008] [HNOI2008]越狱:排列组合,快速幂
- 【数论】【快速幂】bzoj1008 [HNOI2008]越狱
- [bzoj1008](HNOI2008)越狱(矩阵快速幂加速递推)
- [BZOJ1008][HNOI2008]越狱(快速幂)
- 【BZOJ】1008: [HNOI2008]越狱(快速幂)
- [BZOJ1008] [HNOI2008]越狱
- [HNOI2008] [BZOJ1008] 越狱|组合数学
- BZOJ 1008([HNOI2008]越狱-等比数列求和)
- BZOJ 1008 [HNOI2008]越狱
- [BZOJ1008][HNOI2008]越狱