bzoj1008: [HNOI2008]越狱

思路:首先所有情况就是m^n,然后不可能发生越狱的情况就是第一个有m种选择,第二个要与第一个不同就是m-1种选择,第三个要与第二个不同也是m-1种选择,然后不可能发生越狱的情况数就是m*(m-1)^(n-1),然后用总方案数减去它即可。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int p=100003;
 
long long n,m;
 
long long power(long long a,long long k){
    long long x=a;a=1;
    for (;k;k>>=1,x=x*x%p) if (k&1) a=x*a%p;
    return a;
}
 
int main(){
    scanf("%lld%lld",&m,&n);
    printf("%lld\n",(((power(m,n)-m*power(m-1,n-1)%p)%p)+p)%p);
    return 0;
}

 

posted @ 2016-10-28 11:10  DUXT  阅读(140)  评论(3编辑  收藏