BoxerTC

Untitled

Apr 6th, 2015
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.45 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define sc( x ) scanf( "%d" , &x )
  5. #define REP( i , n ) for( int i = 0 ; i < n ; ++i )
  6. #define clr( t , val ) memset( t , val , sizeof( t ) )
  7.  
  8. #define pb push_back
  9. #define all( v ) v.begin() , v.end()
  10. #define SZ( v ) ((int)(v).size())
  11.  
  12. #define mp make_pair
  13. #define fi first
  14. #define se second
  15.  
  16. typedef vector< int > vi;
  17. typedef long long ll;
  18. typedef vector< vi > vvi;
  19.  
  20. #define MOD 1000003LL
  21. #define N 1000002
  22.  
  23. ll F[ N + 5 ] , FP[ N + 5 ];
  24.  
  25. ll pow( ll a , ll b , ll c ){
  26.     ll ans = 1;
  27.     while( b ){
  28.         if( b & 1 ) ans = ( ans * a )%c;
  29.         a = ( a * a )%c;
  30.         b >>= 1;
  31.     }
  32.     return ans;
  33. }
  34. ll mod_inv( ll a , ll p ){
  35.     return pow( a , p - 2 , p );
  36. }
  37. void init(){
  38.     F[ 0 ] = 1;
  39.     for( int i = 1 ; i <= N ; ++i )
  40.         F[ i ] = ( (ll) i * F[ i - 1 ] )%MOD;
  41.     FP[ N ] = mod_inv( F[ N ] , MOD ) ;
  42.     for( int i = N - 1 ; i >= 0 ; --i )
  43.         FP[ i ] = ( (ll)FP[ i + 1 ]*( i + 1 ) )%MOD;
  44. }
  45. ll comb( ll n, ll k ){
  46.     ll ans = 1;
  47.     while( n > 0 ){
  48.         ll ni = n%MOD,ki = k%MOD;
  49.         n /= MOD; k /= MOD;
  50.         if( ni - ki < 0 )return 0;
  51.         ll temp = (FP[ki]*FP[ni-ki])%MOD;
  52.         temp = (temp*F[ni])%MOD;
  53.         ans = (ans*temp)%MOD;
  54.     }
  55.     return ans;
  56. }
  57.  
  58. int main(){
  59.     init();
  60.     ios_base :: sync_with_stdio( 0 );
  61.     int cases;
  62.     cin >> cases;
  63.     REP( tc , cases ){
  64.         ll n , L , R;
  65.         cin >> n >> L >> R;
  66.         ll len = R - L + 1;
  67.         cout << (comb( n + len , len ) - 1 + MOD)%MOD << '\n';
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment