#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
int t;
scanf("%d", &t);
while (t --) {
int n, k;
scanf("%d%d", &n, &k);
if (k > n) {
printf("NIE\n");
continue;
}
if (n <= 8) {
bool found = 0;
for (int i = 0; i < (1 << n); ++i) {
vector<int> v(n);
for (int j = 0; j < n; ++j) {
if (i & (1 << j)) v[j] = 1;
else v[j] = 0;
}
bool ok = false;
for (int j = 0; j < n; ++j) {
int bg = j;
int en = j + k - 1;
if (en >= n) break;
bool palindrome = true;
while (bg <= en) {
if (v[bg] != v[en]) {
palindrome = false;
break;
}
++bg;
en--;
}
if (palindrome) {
ok = true;
break;
}
}
if(!ok) continue;
for (int j = 0; j < n; ++j) {
for (int len = k + 1; len <= n; ++len) {
int bg = j;
int en = j + len - 1;
if(en >= n) break;
bool palindrome = true;
while (bg <= en) {
if (v[bg] != v[en]) {
palindrome = false;
break;
}
++bg;
--en;
}
if (palindrome) {
ok = false;
break;
}
}
if(!ok) break;
}
if (ok) {
found = true;
for (int j = 0; j < n; ++j) {
if(!v[j]) printf("P");
else printf("A");
}
printf("\n");
break;
}
}
if (!found) {
printf("NIE\n");
continue;
}
} else {
if (k < 4) {
printf("NIE\n");
continue;
} else {
for (int i = 0; i < k; ++i) {
cout << "P";
}
int r = n - k;
if(!r){
cout << "\n";
continue;
}
int m = 0;
vector<string> tab = {"APAA", "PPAP", "AAPP"};
for (int i = 0; i + 4 <= r; i += 4) {
cout << tab[m];
m = (m + 1) % 3;
}
if (r % 4 > 0) {
for (int i = 0; i < r % 4; ++i) {
cout << tab[m][i];
}
}
cout << "\n";
}
}
}
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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | #include <iostream> #include <string> #include <vector> using namespace std; int main() { int t; scanf("%d", &t); while (t --) { int n, k; scanf("%d%d", &n, &k); if (k > n) { printf("NIE\n"); continue; } if (n <= 8) { bool found = 0; for (int i = 0; i < (1 << n); ++i) { vector<int> v(n); for (int j = 0; j < n; ++j) { if (i & (1 << j)) v[j] = 1; else v[j] = 0; } bool ok = false; for (int j = 0; j < n; ++j) { int bg = j; int en = j + k - 1; if (en >= n) break; bool palindrome = true; while (bg <= en) { if (v[bg] != v[en]) { palindrome = false; break; } ++bg; en--; } if (palindrome) { ok = true; break; } } if(!ok) continue; for (int j = 0; j < n; ++j) { for (int len = k + 1; len <= n; ++len) { int bg = j; int en = j + len - 1; if(en >= n) break; bool palindrome = true; while (bg <= en) { if (v[bg] != v[en]) { palindrome = false; break; } ++bg; --en; } if (palindrome) { ok = false; break; } } if(!ok) break; } if (ok) { found = true; for (int j = 0; j < n; ++j) { if(!v[j]) printf("P"); else printf("A"); } printf("\n"); break; } } if (!found) { printf("NIE\n"); continue; } } else { if (k < 4) { printf("NIE\n"); continue; } else { for (int i = 0; i < k; ++i) { cout << "P"; } int r = n - k; if(!r){ cout << "\n"; continue; } int m = 0; vector<string> tab = {"APAA", "PPAP", "AAPP"}; for (int i = 0; i + 4 <= r; i += 4) { cout << tab[m]; m = (m + 1) % 3; } if (r % 4 > 0) { for (int i = 0; i < r % 4; ++i) { cout << tab[m][i]; } } cout << "\n"; } } } return 0; } |
English