Cod sursa(job #1824569)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 7 decembrie 2016 23:46:49
Problema Kperm Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>
using namespace std;
typedef long long i64;

const int MOD = 666013;

int fact[5005];

int main(void) {
    ifstream fi("kperm.in");
    ofstream fo("kperm.out");
    int n, k;
    i64 ant;

    ant = 1;

    fi >> n >> k;

    if (k % 2 == 0) {
        fo << 0 << '\n';
        return 0; }

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

    ant = (ant * fact[n % k]) % MOD;
    ant = (ant * fact[k - n % k]) % MOD;
    if (((k - n % k) % k) > 0)
        ant = (ant * ((k - n % k) % k) * fact[n / k]) % MOD;
    if (n % k > 0)
        ant = (ant * (n % k) * fact[n / k + 1]) % MOD;

    fo << ant << '\n';

    return 0; }