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; }