Cod sursa(job #742411)

Utilizator visanrVisan Radu visanr Data 29 aprilie 2012 23:45:33
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;

#define modulo 666013


int v[5001], n, k, r, c;

void calculate()
{
     int i;
     v[0] = 1;
     for(i = 1; i <= 5000; i++)
     {
           v[i] = ((long long)v[i-1] * i) % modulo;
     }
}

void solve()
{
     int i, suma;
     long long sol = 1;
     scanf("%i %i", &n, &k);
     r = n % k;
     c = n / k;
     suma = k * (k - 1) / 2;
     if(suma % k) 
     {
             printf("0\n");
             return ;
     }
     sol = (sol * v[r] * v[k - r]) % modulo;
     for(i = 1; i <= r; i++) sol = (sol * v[c+1]) % modulo;
     for(; i <= k; i++) sol = (sol * v[c]) % modulo;
     printf("%lld\n", sol);
}


int main()
{
    freopen("kperm.in","r",stdin);
    freopen("kperm.out","w",stdout);
    calculate();
    solve();
    return 0;
}