#include <iostream>
using namespace std;
int n, k;
bool czy_palindrom(string slowo)
{
for (int i = 0; i < slowo.size(); i++)
if (slowo[i] != slowo[slowo.size() - i - 1])
return false;
return true;
}
bool is_good(string slowo)
{
int ans = 0;
for (int i = 0; i < n; i++)
{
string curr = "";
for (int j = i; j < n; j++)
{
curr += slowo[j];
if (czy_palindrom(curr))
ans = max(ans, j - i + 1);
}
}
return (ans == k);
}
bool found = false;
void backtrack(int idx, string slowo)
{
if (found)
return;
if (idx == n)
{
if (is_good(slowo))
{
cout << slowo << '\n';
found = true;
}
return;
}
backtrack(idx + 1, slowo + 'A');
backtrack(idx + 1, slowo + 'P');
}
int main()
{
int q;
cin >> q;
while (q--)
{
cin >> n >> k;
backtrack(0, "");
if (!found)
cout << "NIE\n";
found = false;
}
}
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 | #include <iostream> using namespace std; int n, k; bool czy_palindrom(string slowo) { for (int i = 0; i < slowo.size(); i++) if (slowo[i] != slowo[slowo.size() - i - 1]) return false; return true; } bool is_good(string slowo) { int ans = 0; for (int i = 0; i < n; i++) { string curr = ""; for (int j = i; j < n; j++) { curr += slowo[j]; if (czy_palindrom(curr)) ans = max(ans, j - i + 1); } } return (ans == k); } bool found = false; void backtrack(int idx, string slowo) { if (found) return; if (idx == n) { if (is_good(slowo)) { cout << slowo << '\n'; found = true; } return; } backtrack(idx + 1, slowo + 'A'); backtrack(idx + 1, slowo + 'P'); } int main() { int q; cin >> q; while (q--) { cin >> n >> k; backtrack(0, ""); if (!found) cout << "NIE\n"; found = false; } } |
English