Cod sursa(job #2331157)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 29 ianuarie 2019 11:24:31
Problema Kperm Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>

const long long MOD = 666013;

long long log_pow(long long b, long long e) {
  long long sol = 1;
  for (long long i = 1; i <= e; i++)
    sol = (1LL * sol * b) % MOD;
  return sol;
}

long long fact(long long k) {
  long long sol = 1;
  for (long long i = 2; i <= k; i++)
    sol = (1LL * sol * i) % MOD;
  return sol;
}

int main() {
  freopen("kperm.in", "r", stdin);
  freopen("kperm.out", "w", stdout);
  
  long long n, k;
  scanf("%lld%lld", &n, &k);
  if (k % 2 == 0) {
    printf("0\n");
    return 0;
  }
  long long countMod1 = (n - 1) / k + 1;
  long long countMod2 = (n - 1) / k;
  long long r = n % k;
  long long ans = (1LL * log_pow(fact(countMod1), r) * log_pow(fact(countMod2), k - r) * fact(r) * fact(k - r)) % MOD;
  printf("%lld\n", ans);
  return 0;
}