Cod sursa(job #984489)

Utilizator maritimCristian Lambru maritim Data 14 august 2013 16:51:09
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>

FILE *f = fopen("kperm.in","r");
FILE *g = fopen("kperm.out","w");

#define MOD 666013

int N,K,Sol;

void citire(void)
{
    fscanf(f,"%d %d",&N,&K);
}

inline int Perm(int P)
{
    int Prod = 1;

    for(int i=1;i<=P;i++)
        Prod = (1LL*Prod*i)%MOD;

    return Prod;
}

inline int Put(int baza,int exp)
{
    int Prod = 1;
        
    for(int i=1;i<=exp;i++)
        Prod = (1LL*Prod*baza)%MOD;

    return Prod;
}

void Rezolvare(void)
{
    if((K&1) == 0)
        return ;

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

    Sol = 1LL*Perm(C)*Perm(K-C)%MOD;
    Sol = 1LL*Sol*Put(Perm(R+1),C)%MOD;
    Sol = 1LL*Sol*Put(Perm(R),K-C)%MOD;
}

int main()
{
    citire();

    Rezolvare();

    fprintf(g,"%d\n",Sol);
}