Pagini recente » Cod sursa (job #3267762) | Cod sursa (job #1408687) | Cod sursa (job #3279332) | Cod sursa (job #575193) | Cod sursa (job #466202)
Cod sursa(job #466202)
#include <stdio.h>
#define DIM 305
#define MOD 10007
int X[DIM], viz[DIM], SN[DIM];
int N, K, NRP;
void sum_1toN (int n){
for (int i = 1; i <= n; ++i)
SN[i] = SN[i-1] + i;
}
void perm (int k, int sX, int c) {
int i;
if (k == N){
/* int sX = 0, c = 0;
for (i = 1; i <= N; ++i){
printf ("%d", X[i]);
sX += X[i];
if (sX == SN[i])
++c;
}
printf (" %d\n", c);*/
if (c+1 == K) NRP = (NRP + 1) % MOD;
return;
}
int add;
for (i = 1; i <= N; ++i)
if (!viz[i]){
X[k] = i;
add = 0;
if (sX + X[k] == SN[k])
++add;
if (c+add == K) continue;
if (c+add + N-k < K) continue;
viz[i] = 1;
perm (k + 1, sX + X[k], c+add);
viz[i] = 0;
}
}
int main () {
freopen ("permutari2.in", "r", stdin);
freopen ("permutari2.out", "w", stdout);
scanf ("%d%d", &N, &K);
sum_1toN (N);
perm (1, 0, 0);
printf ("%d", NRP);
return 0;
}