Cod sursa(job #2277276)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 5 noiembrie 2018 22:33:12
Problema Kperm Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 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 mypow(int x, int power) {
    int ret = 1;
    for (int i = 0; i < power; ++i) {
        ret = (1LL * ret * x) % MOD;
    } 
    return ret;
}

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

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

    int r = n % k;
    int c = k - r;
    int ans = (1LL * fact[r] * fact[c]) % MOD;
    ans = (1LL * ans * mypow(fact[(n + k - 1) / k], r) * mypow(fact[n / k], c)) % MOD;

    fout << ans;
    return 0;
}