Cod sursa(job #1258429)

Utilizator acomAndrei Comaneci acom Data 8 noiembrie 2014 20:58:24
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<fstream>
using namespace std;
#define MOD 666013
ifstream fin("kperm.in");
ofstream fout("kperm.out");
long long n,k,p,r,F[5005];
long long pow(long long N, long long K)
{
    long long sol=1;
    while (K)
    {
        if (K&1) sol*=N, sol%=MOD;
        N*=N, N%=MOD;
        K>>=1;
    }
    return sol;
}
int main()
{
    long long i;
    fin>>n>>k;
    if (!(k&1))
    {
        fout<<"0\n";
        return 0;
    }
    p=n/k, r=n%k;
    for (i=1,F[0]=1;i<=n;++i)
        F[i]=F[i-1]*i%MOD;
    fout<<F[r]*F[k-r]%MOD*pow(F[p+1],r)%MOD*pow(F[p],k-r)%MOD<<"\n";
    return 0;
}