Cod sursa(job #1615434)

Utilizator depevladVlad Dumitru-Popescu depevlad Data 26 februarie 2016 16:10:28
Problema Sandokan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>

using namespace std;

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

const int MOD = 2000003;

int intExp(int b, int e) {
    if(e == 0) return 1;
    int half = intExp(b, e >> 1);
    if(e & 1) return 1LL * half * half % MOD * b % MOD;
    return 1LL * half * half % MOD;
}

int modInv(int x) {
    return intExp(x, MOD - 2);
}

int getComb(int n, int k) {
    int ans, i;

    ans = 1;
    for(i = 1; i <= k; i++) {
        ans = 1LL * ans * (n - i + 1) % MOD * modInv(i) % MOD;
    }

    return ans;
}

int main() {
    int n, k, sol;

    in >> n >> k;
    sol = getComb(n - 1, (n - 1) % (k - 1));

    out << sol << '\n';
    return 0;
}