Cod sursa(job #3223895)

Utilizator unomMirel Costel unom Data 14 aprilie 2024 09:25:14
Problema Sandokan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>

using namespace std;

#define int long long

ifstream in("sandokan.in");
ofstream out("sandokan.out");
int n, k, p;
int fact[5005];
int invfact[5005];
int MOD = 2000003;

int lgput(int x, int e)
{
    int ans = 1;
    while(e != 0)
    {
        if(e % 2 == 1)
        {
            ans = (ans * x) % MOD;
        }

        x = (x * x) % MOD;
        e /= 2;
    }

    return ans;
}

int combinari(int k, int n)
{
    return (((fact[n] * invfact[k]) % MOD) * invfact[n - k]) % MOD;
}

signed main()
{
    in>>n>>k;

    fact[0] = invfact[0] = 1;
    for(int i = 1; i<=n; i++)
    {
        fact[i] = (fact[i - 1] * i) % MOD;
        invfact[i] = lgput(fact[i], MOD - 2);
    }

    p = (n - 1) % (k - 1) + 1;

    out<<combinari(p - 1, n - 1);

    return 0;
}