首页 > 其他 > 详细

bzoj 4403 序列统计

时间:2016-01-22 10:24:38      阅读:123      评论:0      收藏:0      [点我收藏+]

我们很容易知道要求的式为

技术分享

由公式

技术分享

化得

技术分享

lucas定理求得

 1 #include<cstdio>
 2 using namespace std ; 
 3 
 4 const long long MOD = ( long long ) 1e6 + 3 ;
 5 const long long MAXN = MOD ;
 6 
 7 long long mypow ( register long long a , register int n ) {
 8     register long long ans = 1 ;
 9     while ( n ) {
10         if ( n & 1 ) ans = ans * a % MOD ;
11         n >>= 1 ;
12         a = a * a % MOD ;
13     }
14     return ans ;
15 }
16 
17 long long p [ MAXN ] ;
18 void get_c () {
19     register long long o = 1 ; 
20     long long N = MOD ;
21     p [ 0 ] = 1 ;
22     for ( register int i = 1 ; i < N ; ++ i ) p [ i ] = o = ( o * i % MOD ) ;
23 }
24 
25 long long _C ( const int n , const int m ) {
26     if ( n > m ) return 0 ;
27     return p [ m ] * mypow (  p [ n ] , MOD - 2 )  % MOD * mypow ( p [ m - n ] , MOD - 2 ) % MOD  ;
28 }
29 
30 long long C ( long long n , long long m ) {
31     //printf ( "%lld %lld\n" , n , m ) ;
32     long long ans = 1 ;
33     while ( m ) {
34         ans = ans * _C ( n % MOD , m % MOD ) % MOD ;
35         n /= MOD ; m /= MOD ;
36     }
37     return ans ;
38 }
39 
40 void solve () {
41     int n , L , R ;
42     scanf ( "%d%d%d" , & n , & L , & R ) ;
43     printf ( "%lld\n" , ( C ( ( n - 1 ) + 1 , R - L + ( n - 1 ) + 2 ) + ( MOD - 1 ) ) % MOD ) ;
44 }
45 
46 int T ;
47 int main () {
48     get_c () ;
49     scanf ( "%d" , & T ) ;
50     while ( T -- ) 
51         solve () ;
52     return 0 ;
53 }

 

bzoj 4403 序列统计

原文:http://www.cnblogs.com/Christopher-Cao/p/5150174.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!