Pagini recente » Cod sursa (job #423485) | Cod sursa (job #469919) | Cod sursa (job #452438) | Cod sursa (job #2451861) | Cod sursa (job #1912329)
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <bitset>
#include <algorithm>
#include <cmath>
#define MaxN 5005
#define MOD 666013
using namespace std;
FILE*IN,*OUT;
long long N,K,C,R,Answer=1,f[MaxN];
long long LogPow(long long base,int exp)
{
if(exp==0)return 1;
long long act=1;
for(int pos=0;pos<=20;pos++)
{
if(exp&(1<<pos))
act=(act*base)%MOD;
base=(base*base)%MOD;
}
return act;
}
int main()
{
IN=fopen("kperm.in","r");
OUT=fopen("kperm.out","w");
fscanf(IN,"%d%d",&N,&K);
if(K%2==0)
{
fprintf(OUT,"0\n");
return 0;
}
f[0]=1;
for(int i=1;i<=N;i++)
f[i]=(f[i-1]*i)%MOD;
C=N/K,R=N%K;
Answer=(f[R]*f[K-R])%MOD;
Answer=(Answer*LogPow(f[C+1],R))%MOD;
Answer=(Answer*LogPow(f[C],K-R))%MOD;
fprintf(OUT,"%d",Answer);
return 0;
}