zoukankan      html  css  js  c++  java
  • bzoj4403 序列统计

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

    由公式

    化得

    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 , 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
    " , ( 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 }
  • 相关阅读:
    kettle 3:java调用transformation
    SEO网站优化笔记
    图案设计的素材
    TweenLite 使用详解(译文)
    flv文件修复文件头
    一个拼图素材
    外螺旋矩阵排列
    20160226.CCPP体系详解(0036天)
    tcp三次握手与四次分手
    docker 应用数据的管理之bind mounts
  • 原文地址:https://www.cnblogs.com/Christopher-Cao/p/5150174.html
Copyright © 2011-2022 走看看