Cod sursa(job #25685)

Utilizator astronomyAirinei Adrian astronomy Data 4 martie 2007 14:11:00
Problema Kperm Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>

#define MAXN 5128
#define MOD 666013

int N, K, R[MAXN], mod[MAXN];
int I, J, P, res;

void solve(void)
{
    int i;

    for(mod[0] = 1, i = 1; i <= N; i++)
        mod[i] = (int)((long long)i*mod[i-1]%MOD);
        
    for(i = 1; i <= N; i++)
        R[i%K]++;

    for(i = 0; i < K; i++)
     if(R[i] > P)
        P = R[i];

    for(i = 0; i < K; i++)
     if(R[i] == P)
        I++;
     else
        J++;

    res = mod[I];
    for(i = 1; i <= I; i++)
        res = (int)((long long)res*mod[P]%MOD);

    res = (int)((long long)res*mod[J]%MOD);
    for(i = 1; i <= J; i++)
        res = (int)((long long)res*mod[P-1]%MOD);
}

void read_data(void)
{
    scanf("%d %d\n", &N, &K);
}

void write_data(void)
{
    printf("%d\n", res);
}

int main(void)
{
    freopen("kperm.in", "rt", stdin);
    freopen("kperm.out", "wt", stdout);

    read_data();

    if( ((K-1)*K/2) % K != 0 )
    {
        printf("0\n");
        return 0;
    }
    
    solve();
    write_data();

    return 0;
}