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 }
  • 相关阅读:
    flask2 未整理
    flask1 未整理
    libvirt创建kvm虚拟机步骤
    libvirt之 virsh命令总结
    kvm的xml文件解释
    virsh命令和调用libvirt api的区别
    KVM
    libvirt
    kvm
    oracle中正则表达式的使用
  • 原文地址:https://www.cnblogs.com/Christopher-Cao/p/5150174.html
Copyright © 2011-2022 走看看