Cod sursa(job #3280412)

Utilizator tudorhTudor Horobeanu tudorh Data 26 februarie 2025 13:57:08
Problema Sandokan Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("sandokan.in");
ofstream fout("sandokan.out");
int mod=2e6+3;
int fact(int n)
{
    int r=1;
    for(int i=2;i<=n;i++)
        r=(1ll*r*i)%mod;
    return r;
}
int power(long long base,int power)
{
    long long r=1;
    while(power)
    {
        if(power%2)
        {
            r*=base;
            r%=mod;
        }
        base*=base;
        base%=mod;
        power/=2;
    }
    return r;
}
int invfact(int n)
{
    return power(fact(n),mod-2);
}
int C(int n,int k)
{
    return fact(n)*invfact(n-k)%mod*invfact(k)%mod;
}
int main()
{
    int n,k,st=0,dr,mid,r,ramase;
    fin>>n>>k;
    dr=n;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(n-mid*(k-1)<k)
        {
            r=mid;
            dr=mid-1;
        }
        else st=mid+1;
    }
    ramase=n-(k-1)*r;
    fout<<C(n-1,ramase-1);
    return 0;
}