Cod sursa(job #1221990)

Utilizator sebinechitasebi nechita sebinechita Data 21 august 2014 20:16:33
Problema Kperm Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("kperm.in");
ofstream fout("kperm.out");
#define MOD 666013

int fact[5001];

int pow(int a, int p)
{
    int rez=1;
    while(p)
    {
        if(p&1)
            rez=(1LL*rez*a)%MOD;
        a=(1LL*a*a)%MOD;
        p>>=1;
    }
    return rez;
}

int main()
{
    int n, k, a, b, c, d, i, x, rez;
    fin>>n>>k;
    fact[0]=1;
    for(i=1;i<=n;i++)
        fact[i]=1LL*(fact[i-1]*i)%MOD;
    if(k%2==0)
    {
        fout<<"0\n";
        return 0;
    }

    a = n / k;
    b = n % k;
    if(b==0)
        c=a;
    else
        c=a+1;
    d=(k-n%k);
    if(n%k==0)
    {
        fout<<(1LL*pow(fact[a], k)*fact[k])%MOD;
        return 0;
    }
    fout<<(1LL*((1LL*pow(fact[c], b)*fact[b])%MOD)*((1LL*pow(fact[a], d)*fact[d])%MOD))%MOD;
}