Задача №1901. ???
#include <cassert> #include <cstdio> #include <cstring> const int MaxN = 10, MaxK = 1 << MaxN; long long f [2] [MaxK]; int k, m, n; int main (void) { int b, i, j, l; while (scanf (" %d %d", &m, &n) != EOF) { assert (1 <= m && m <= MaxN); assert (1 <= n && n <= MaxN); k = 1 << m; b = 0; memset (f[b], 0, sizeof (f[b])); f[b][0] = 1; for (i = 0; i < n; i++) for (j = 0; j < m; j++) { b = !b; memset (f[b], 0, sizeof (f[b])); for (l = 0; l < k; l++) if (f[!b][l]) { f[b][l ^ (1 << j)] += f[!b][l]; if (j + 1 < n && !(l & (5 << j))) f[b][l | (2 << j)] += f[!b][l]; } } printf ("%lld\n", f[b][0]); } return 0; }
Примеры
Входные данные
1 1
Выходные данные
0
Входные данные
2 3
Выходные данные
3
Сдать: для сдачи задач необходимо войти в систему