Cod sursa(job #2293131)

Utilizator flaviu_2001Craciun Ioan-Flaviu flaviu_2001 Data 30 noiembrie 2018 16:25:29
Problema Sandokan Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>
#define ff first
#define ss second

using namespace std;
typedef long long ll;
typedef long double ld;

const string file = "sandokan";
const ll INF = 9223372036854775807ll;
const int inf = 2147483647, M = 2000003;

int n, k, f[5005];

int pw(int x, int y)
{
    int p = 1;
    while(y)
        if(y%2 == 0){
            x = (1ll*x*x)%M;
            y /= 2;
        }else{
            p = (1ll*p*x)%M;
            --y;
        }
    return p;
}

int main()
{
    ifstream fin (file+".in");
    ofstream fout (file+".out");
    fin >> n >> k;
    f[0] = 1;
    for (int i = 1; i <= n; ++i)
        f[i] = (1ll*f[i-1]*i)%M;
    int ans = f[n-1];
    ans = (1ll*ans*pw(f[(n-1)%k], M-2))%M;
    ans = (1ll*ans*pw(f[n-1-((n-1)%k)], M-2))%M;
    fout << ans << "\n";
    return 0;
}