Cod sursa(job #33607)

Utilizator vlad_popaVlad Popa vlad_popa Data 19 martie 2007 16:03:09
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
using namespace std;

#include <cstdio>
#include <cassert>

#define FIN "kperm.in"
#define FOUT "kperm.out"
#define PRIM 666013

int N, K, C, R;

void read ()
{
  scanf ("%d%d", &N, &K);

  C = N / K;
  R = N % K;
}

void solve ()
{
  long long sol = 1;
  
  if (K & 1)
   {
     for (int i = 2; i <= R; ++ i)
      {
        sol *= i;
        sol %= PRIM;
      }
     for (int i = 2; i <= K - R; ++ i)
      {
        sol *= i;
        sol %= PRIM;
      }
     for (int i = 2; i <= C + 1; ++ i)
       for (int j = 1; j <= R; ++ j)
        {
          sol *= i;
          sol %= PRIM;
        }
     for (int i = 2; i <= C; ++ i)
       for (int j = 1; j <= K - R; ++ j)
        {
          sol *= i;
          sol %= PRIM;
        }
     printf ("%d\n", sol);
   }
  else
    printf ("0\n");
}

int
 main ()
{
  freopen (FIN, "rt", stdin);
  freopen (FOUT, "wt", stdout);

  read ();
  solve ();
  return 0;
}