Pagini recente » Cod sursa (job #804475) | Cod sursa (job #256234) | Cod sursa (job #1396581) | Cod sursa (job #220267) | Cod sursa (job #3180615)
#include <fstream>
#define ll long long
using namespace std ;
ifstream cin ("sandokan.in") ;
ofstream cout ("sandokan.out") ;
const ll MOD = 2000003, limit = 5000 ;
ll fact[limit + 2], inv[limit + 2] ;
ll fast_power (ll a, ll 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 - 1] % MOD * inv[k - 1] % MOD * inv[n - k] % MOD) ;
}
int main()
{
ll n, k ;
int x ;
preload() ;
cin >> n >> k ;
ll val = n ;
while (val - (k - 1) > 0)
val -= (k - 1) ;
for (int i = 1 ; i <= n ; i ++)
cin >> x ;
cout << combinatorics (n, val) ;
return 0 ;
}