Cod sursa(job #3306770)

Utilizator Lex._.Lex Guiman Lex._. Data 13 august 2025 15:57:41
Problema Sandokan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
#define MOD 2000003
using namespace std;

void euclid(int a, int b, int& x1, int& y1) ///invers modular
{
    if(b==0)
    {
        x1=1;
        y1=1;
    }
    else
    {
        int x2, y2;
        euclid(b, a%b, x2, y2);
        x1=y2;
        y1=x2-a/b*y2;
    }
}

int C(int a, int b) ///combinari de a luate cate b
{
    if(a<b) return 0;
    int C=1, fact=1; ///fact = b!

    for(int i=1; i<=b; i++)
    {
        C=(long long)C*(a-i+1) %MOD;
        fact=(long long)fact*i %MOD;
    }
    int invers_mod, y; ///invers_mod = inversul modular al lui b!
    euclid(fact, MOD, invers_mod, y);
    while(invers_mod<0) invers_mod+=MOD;

    C=(long long)C*invers_mod %MOD;
    return C;
}

int main()
{
    ifstream in("sandokan.in");
    ofstream out("sandokan.out");
    int n, k;
    in >> n >> k;
    out << C(n-1, n%(k-1)-1);

    return 0;
}