Cod sursa(job #3357683)

Utilizator Radu_BicliBiclineru Radu Radu_Bicli Data 12 iunie 2026 19:50:25
Problema Sandokan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;

#define USE_STD_IO 0
#if USE_STD_IO
    #define fin cin
    #define fout cout
#else
    ifstream fin("sandokan.in");
    ofstream fout("sandokan.out");
#endif

const long long MOD = 2000003;
int n, k;

static inline long long Put(long long a, long long n) {
    long long p = 1;
    while(0 < n) {
        if(1 & n) p = (p * a) % MOD;
        a = (a * a) % MOD;
        n >>= 1;
    }
    return p;
}

static inline long long Comb(long long n, long long k) {
    if(n < k) return 1;
    long long nr = 1, nm = 1;
    for(long long i = 1; i <= k; i++) {
        nr = ((n - i + 1) % MOD * nr) % MOD;
        nm = (i * nm) % MOD;
    }
    return nr * Put(nm, MOD - 2) % MOD;
}

int main() {
    #if USE_STD_IO
        ios_base::sync_with_stdio(false);
    #endif // USE_STD_IO
    fin.tie(NULL);
    fout.tie(NULL);

    fin >> n >> k;
    n--, k--;
    fout << Comb(n, (n / k) * k);

    return 0;
}