#include <bits/stdc++.h>
using namespace std;
int t[100][100];
void bitprint(int x, int n) {
for (int i=0; i<n; i++) {
printf("%d", x%2);
x /= 2;
}
printf("\n");
}
int brut(int n, int k) {
for (int i=0; i<(1<<n); i++) {
vector<int> v;
for (int j=0; j<n; j++) {
// printf("%d %d %d\n", i, (1<<j), i&(1<<j));
if ((i&(1<<j)) > 0)
v.push_back(1);
else
v.push_back(0);
}
int res = 0;
for (int kk=0; kk<n; kk++) {
for (int pp=0; pp<=kk; pp++) {
bool ok = true;
for (int j=0; j<kk-pp+1; j++) {
if (v[pp+j] != v[kk-j]) {
ok = false;
break;
}
}
if (ok && kk-pp+1 > res) {
res = kk-pp+1;
}
}
}
// for (int i=0; i<n; i++)
// printf("%d", v[i]);
// printf("\n");
// bitprint(i, n);
// printf(" %d\n", res);
if (res == k)
return i;
}
return -1;
}
void NO() {
printf("NIE\n");
}
vector<char> temp = {'P', 'A', 'P', 'P', 'A', 'A'};
void solve() {
int n, k;
scanf("%d%d", &n, &k);
if (n < 12) {
int x = brut(n, k);
if (x == -1)
return NO();
for (int i=0; i<n; i++) {
printf("%c", x%2 == 0 ? 'P' : 'A');
x /= 2;
}
printf("\n");
return;
}
if (k <= 3)
return NO();
for (int i=0; i<k; i++)
printf("A");
for (int i=0; i<n-k; i++)
printf("%c", temp[i%temp.size()]);
printf("\n");
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
solve();
}
// printf("%d\n", brut(5, 3));
// for (int n=1; n<=12; n++) {
// for (int k=1; k<=n; k++) {
// printf("t[%d][%d] = %d;\n", n, k, brut(n, k));
// }
// }
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | #include <bits/stdc++.h> using namespace std; int t[100][100]; void bitprint(int x, int n) { for (int i=0; i<n; i++) { printf("%d", x%2); x /= 2; } printf("\n"); } int brut(int n, int k) { for (int i=0; i<(1<<n); i++) { vector<int> v; for (int j=0; j<n; j++) { // printf("%d %d %d\n", i, (1<<j), i&(1<<j)); if ((i&(1<<j)) > 0) v.push_back(1); else v.push_back(0); } int res = 0; for (int kk=0; kk<n; kk++) { for (int pp=0; pp<=kk; pp++) { bool ok = true; for (int j=0; j<kk-pp+1; j++) { if (v[pp+j] != v[kk-j]) { ok = false; break; } } if (ok && kk-pp+1 > res) { res = kk-pp+1; } } } // for (int i=0; i<n; i++) // printf("%d", v[i]); // printf("\n"); // bitprint(i, n); // printf(" %d\n", res); if (res == k) return i; } return -1; } void NO() { printf("NIE\n"); } vector<char> temp = {'P', 'A', 'P', 'P', 'A', 'A'}; void solve() { int n, k; scanf("%d%d", &n, &k); if (n < 12) { int x = brut(n, k); if (x == -1) return NO(); for (int i=0; i<n; i++) { printf("%c", x%2 == 0 ? 'P' : 'A'); x /= 2; } printf("\n"); return; } if (k <= 3) return NO(); for (int i=0; i<k; i++) printf("A"); for (int i=0; i<n-k; i++) printf("%c", temp[i%temp.size()]); printf("\n"); } int main() { int T; scanf("%d", &T); while (T--) { solve(); } // printf("%d\n", brut(5, 3)); // for (int n=1; n<=12; n++) { // for (int k=1; k<=n; k++) { // printf("t[%d][%d] = %d;\n", n, k, brut(n, k)); // } // } return 0; } |
English