Pagini recente » Cod sursa (job #18128) | Cod sursa (job #1277042) | Cod sursa (job #2413181) | Cod sursa (job #2415581) | Cod sursa (job #2331161)
#include <cstdio>
#include <algorithm>
using namespace std;
int f[5005];
const int mod = 666013;
int main()
{ freopen("kperm.in", "r",stdin);
freopen("kperm.out", "w",stdout);
int n,k,i,nr,nr1,maxx,maxx1=0,fact,ans=1,factmaxx,factmaxx1;
scanf("%d%d", &n, &k);
if(k%2==0){
printf("0");
return 0;
}
for(i=1; i<=n; i++)
f[i%k]++;
nr=0;
nr1=0;
if(n%k==0)
{
maxx=f[1];
maxx1=f[0];
for(i=0; i<k; i++)
if(f[i]==maxx)
nr++;
else
nr1++;
fact=1;
factmaxx=1;
for(i=1; i<=maxx; i++)
factmaxx=(factmaxx*1LL*i)%mod;
for(i=1; i<=nr; i++){
ans=(ans*1LL*factmaxx)%mod;
fact=(fact*1LL*i)%mod;
}
ans=(ans*1LL*fact)%mod;
printf("%d",ans);
}
else
{
maxx=f[1];
maxx1=f[0];
for(i=0; i<k; i++)
if(f[i]==maxx)
nr++;
else
nr1++;
fact=1;
factmaxx=1;
for(i=1; i<=maxx; i++)
factmaxx=(factmaxx*1LL*i)%mod;
for(i=1; i<=nr; i++){
ans=(ans*1LL*factmaxx)%mod;
fact=(fact*1LL*i)%mod;
}
ans=(ans*1LL*fact)%mod;
fact=1;
factmaxx1=1;
for(i=1; i<=maxx1; i++)
factmaxx1=(factmaxx1*1LL*i)%mod;
for(i=1; i<=nr1; i++){
ans=(ans*1LL*factmaxx1)%mod;
fact=(fact*1LL*i)%mod;
}
ans=(ans*1LL*fact)%mod;
printf("%d", ans);
}
return 0;
}