Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <iostream>
- #include <cmath>
- #include <algorithm>
- #include <bitset>
- #include <string>
- using namespace std;
- const int MAXN = 25;
- const int MAXM = 1 << MAXN;
- bool f[MAXM];
- int p[MAXM];
- int n;
- int main()
- {
- #ifndef ONLINE_JUDGE
- freopen("in", "r", stdin);
- freopen("out", "w", stdout);
- #endif
- f[0] = true;
- scanf("%d", &n);
- for (int i = 1; i < (1 << n); i++)
- {
- for (int j = 0; j < n; j++)
- if ((i & (1 << j)) && !f[i ^ (1 << j)])
- {
- f[i] = true;
- p[i] = i ^ (1 << j);
- break;
- }
- for (int j = 0; j < n - 1; j++)
- if ((i & (3 << j)) == (3 << j) && !f[i ^ (3 << j)])
- {
- f[i] = true;
- p[i] = i ^ (3 << j);
- break;
- }
- }
- for (int i = 1; i <= n; i++)
- {
- printf("%d: %d ", i, f[(1 << i) - 1]);
- if (f[(1 << i) - 1])
- {
- int x = p[(1 << i) - 1];
- for (int j = 0; j < i; j++)
- printf("%c", x & (1 << j)? 'X' : '.');
- }
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment