Pagini recente » Cod sursa (job #397638) | Cod sursa (job #3197420) | Cod sursa (job #99180) | Cod sursa (job #3276414) | Cod sursa (job #25436)
Cod sursa(job #25436)
#include<stdio.h>
#define MOD 666013
long n , i , j,k;
long stiva[5001];
long sol;
void tipar()
{
/*
for (int i =1 ; i <= n ; i++)
printf("%ld ",stiva[i]);
printf("\n");*/
sol++;
if (sol>=MOD)
sol -= MOD;
}
int valid (int poz, int val)
{
for (i = poz-1 ; i >= 1 ; i--)
if (stiva[i] == val)
return 0;
if (poz < k)
return 1;
long s = 0;
for (i = poz ; i >=poz-k;i--)
s += stiva[i];
if (s%k==0)
return 1;
}
void back(int k)
{
for (int i = 1 ; i <= n ; i++)
{
if (valid(k,i))
{
stiva[k] = i;
if (k==n)
tipar();
else
back(k+1);
}
}
}
int main()
{
freopen("kperm.in","r",stdin);
freopen("kperm.out","w",stdout);
scanf("%ld%ld",&n,&k);
if (n==k || k == 1)
{
long p =1;
for (i = 1 ; i <=n ; i++)
{
p*=i;
if (p>=MOD)
p-= MOD;
}
sol = p;
sol%=MOD;
}
else
{
back(1);}
printf("%ld",sol);
return 0;
}