Cod sursa(job #3180390)

Utilizator LORDENVraja Luca LORDEN Data 5 decembrie 2023 08:50:43
Problema Sandokan Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#define ll long long

using namespace std ;

ifstream cin ("sandokan.in") ;
ofstream cout ("sandokan.out") ;

const ll MOD = 2e6 + 3, limit = 5000 ;

int n, k ;
ll fact[limit + 2], inv[limit + 2] ;

ll fast_power (int a, int b) {

    ll ans = 1 ;

    while (b) {

        if ((b & 1))
            ans = (ans % MOD * a % MOD) % MOD ;

        a = (a % MOD * a % MOD) % MOD ;

        b = (b >> 1) ;

    }

    return ans ;

}

void preload ()
{

    fact[1] = 1 ;
    inv[0] = inv[1] = 1 ;

    for (ll i = 2 ; i <= limit ; i ++)
    {

        fact[i] = i % MOD * fact[i - 1] % MOD ;
        inv[i] = fast_power (fact[i], MOD - 2) ;

    }


}

ll combinatorics (ll n, ll k)
{

    return (fact[n] % MOD * inv[k] % MOD * inv[n - k] % MOD) ;

}

int main()
{

    int x ;

    preload() ;

    cin >> n >> k ;

    for (int i = 1 ; i <= n ; i ++)
        cin >> x ;

    cout << combinatorics (n, k) ;

    return 0 ;

}