bzoj 1008 组合计数

 

正难则反

前面定后面就定->枚举开头

 

 1 /**************************************************************
 2     Problem: 1008
 3     User: idy002
 4     Language: C++
 5     Result: Accepted
 6     Time:0 ms
 7     Memory:804 kb
 8 ****************************************************************/
 9  
10 #include <cstdio>
11 #define M 100003
12  
13 typedef long long lng;
14  
15 lng n, m;
16  
17 lng mpow( lng a, lng b ) {
18     a %= M;
19     lng rt;
20     for( rt=1; b; b>>=1,a=(a*a)%M ) 
21         if( b&1 ) rt=(rt*a)%M;
22     return rt;
23 }
24  
25 int main() {
26     scanf( "%lld%lld", &m, &n );
27     lng ans = mpow( m, n ) - ((m%M)*(mpow( m-1, n-1 )%M))%M;
28     ans = (ans%M+M)%M;
29     printf( "%lld\n", ans );
30 }
View Code

 

posted @ 2015-02-18 10:59  idy002  阅读(60)  评论(0编辑  收藏