Cod sursa(job #1324060)

Utilizator diana97Diana Ghinea diana97 Data 21 ianuarie 2015 19:22:39
Problema Sandokan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int MOD = 2000003;
const int NMAX = 5000 + 1;


int n, k;

long long factorial(long long x) {
    long long rez = 1;
    for (long long i = 2; i <= x; i++)
        rez = (rez * i) % MOD;
    return rez;
}

long long putere(int x, int p) {
    if (p == 0) return 1;
    long long y = putere(x, p / 2);
    y = (y * y) % MOD;
    if (p % 2 == 0) return y;
    return (y * x) % MOD;
}


inline long long invers_modular(long long x) {
    return putere(x, MOD - 2);
}

long long combinari(long long n, long long k) {
    long long sol;
    sol = (factorial(n) * invers_modular(factorial(k))) % MOD;
    sol = (sol * invers_modular(factorial(n - k))) % MOD;
    return sol;
}

int main() {
    f >> n >> k;
    n--; k--;
    k = n % k;
    g << combinari(n, k) << '\n';
    return 0;
}