Cod sursa(job #3251247)

Utilizator Radu_BicliBiclineru Radu Radu_Bicli Data 25 octombrie 2024 15:14:28
Problema Sandokan Scor 15
Compilator cpp-64 Status done
Runda cex_1 Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("sandokan.in");
ofstream fout("sandokan.out");
const long long mod = 2000003;
long long n, k;

static inline long long Prod(long long a, long long b) {
    return (a * b) % mod;
}

static inline long long Put(long long a = 2, long long n = 2) {
    long long p = 1;
    while(n) {
        if(n & 1) p = Prod(p, a);
        a = Prod(a, a);
        n >>= 1;
    }
    return p;
}

static inline long long Inv(long long a) {
    return Put(a, mod - 2);
}

static inline long long Comb(long long n, long long k) {
    long long nr = 1;
    long long nm = 1;
    for(int i = 1; i <= k; i++) {
                       nr = Prod(nr, i);
        if(i <= k)     nm = Prod(nm, i);
        if(i <= n - k) nm = Prod(nm, i);
    }
    return Prod(nr, Inv(nm));
}

int main() {
    fin >> n >> k;
    n--;
    k--;
    
    fout << Comb(n, n % k);

    return 0;
}