Cod sursa(job #2331127)

Utilizator MiricaMateiMirica Matei MiricaMatei Data 29 ianuarie 2019 10:53:19
Problema Kperm Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

const int MOD = 666013;

int fr[5005];
int f[5005];

int main() {
  freopen("kperm.in", "r", stdin);
  freopen("kperm.out", "w", stdout);

  int n, k;
  scanf("%d%d", &n, &k);
  if (k % 2 == 0) {
    printf("0\n");
    return 0;
  }
  for (int i = 1; i <= n; ++i) {
    int p = i % k;
    if (p == 0)
      p = k;
    fr[p]++;
  }
  f[0] = 1;
  for (int i = 1; i <= n; ++i)
    f[i] = 1LL * f[i - 1] * i % MOD;
  int c1 = 0, c2 = 0;
  for (int i = 1; i <= k; ++i) {
    if (fr[i] == fr[1])
      c1++;
    else
      c2++;
  }

  int ans = 1LL * f[c1] * f[c2] % MOD;

  for (int i = 1; i <= k; ++i)
    ans = 1LL * ans * f[fr[i]] % MOD;

  printf("%d\n", ans);

  return 0;
}