Cod sursa(job #2277258)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 5 noiembrie 2018 22:00:04
Problema Kperm Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
   
using namespace std;
 
typedef long long int ll;
typedef long double ld;

const int MOD = 666013;

ifstream fin("kperm.in");
ofstream fout("kperm.out");

int main() {
    int n, k; fin >> n >> k;
    if (k % 2 == 0) {
        fout << 0;
        exit(0);
    }

    vector < int > v(k + 1);
    for (int i = 1; i <= k; ++i) {
        v[i] = (n - i) / k + 1;
    }

    vector < int > fact(k + 1);
    fact[0] = 1;
    for (int i = 1; i <= k; ++i) {
        fact[i] = (1LL * i * fact[i - 1]) % MOD;
    }

    int ans = 1;
    int len, val;
    len = 0; val = v[1];
    for (int i = 1; i <= k; ++i) {
        ans = (1LL * ans * fact[v[i]]) % MOD;
        if (v[i] == val) {
            ++len;
        } else {
            ans = (1LL * ans * fact[len]) % MOD;
            len = 1;
            val = v[i];
        }
    }
    ans = (1LL * ans * fact[len]) % MOD;

    fout << ans;
    return 0;
}