#include <iostream>
#include <string>
using namespace std;
static int iTotalLen, iMaxPalLen;
static string sA(1 << 20, 'A');
static string sP(1 << 20, 'P');
static void Even()
{
string s = sA.substr(0, iMaxPalLen);
for (int i = 1; i <= (iMaxPalLen - 2) / 2; ++i)
{
s.append("PP");
}
for (int i = 1; i <= (iMaxPalLen - 2) / 2; ++i)
{
s.append("AP");
}
s.append(sA.substr(0, iMaxPalLen));
if (s.size() < iTotalLen)
{
cout << "NIE";
}
else
{
cout << s.substr(0, iTotalLen);
}
}
static void Odd()
{
string s = sA.substr(0, iMaxPalLen);
for (int i = 1; i <= (iMaxPalLen - 1) / 2; ++i)
{
s.append("PA");
}
s.append(sP.substr(0, iMaxPalLen));
if (s.size() < iTotalLen)
{
cout << "NIE";
}
else
{
cout << s.substr(0, iTotalLen);
}
}
static void Solve()
{
cin >> iTotalLen >> iMaxPalLen;
int iRestLen = iTotalLen - iMaxPalLen;
if (iRestLen <= iMaxPalLen)
{
cout << sA.substr(0, iMaxPalLen);
cout << sP.substr(0, iRestLen);
return;
}
if (iMaxPalLen < 3)
{
cout << "NIE";
return;
}
if ((iMaxPalLen & 1) != 0)
Odd();
else
Even();
}
int main()
{
int t;
// freopen("sample_input.txt", "r", stdin);
// freopen("sample_output.txt", "w", stdout);
cin >> t;
for (int i = 1;; ++i)
{
Solve();
if (i == t)
break;
cout << endl;
}
}
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 <iostream> #include <string> using namespace std; static int iTotalLen, iMaxPalLen; static string sA(1 << 20, 'A'); static string sP(1 << 20, 'P'); static void Even() { string s = sA.substr(0, iMaxPalLen); for (int i = 1; i <= (iMaxPalLen - 2) / 2; ++i) { s.append("PP"); } for (int i = 1; i <= (iMaxPalLen - 2) / 2; ++i) { s.append("AP"); } s.append(sA.substr(0, iMaxPalLen)); if (s.size() < iTotalLen) { cout << "NIE"; } else { cout << s.substr(0, iTotalLen); } } static void Odd() { string s = sA.substr(0, iMaxPalLen); for (int i = 1; i <= (iMaxPalLen - 1) / 2; ++i) { s.append("PA"); } s.append(sP.substr(0, iMaxPalLen)); if (s.size() < iTotalLen) { cout << "NIE"; } else { cout << s.substr(0, iTotalLen); } } static void Solve() { cin >> iTotalLen >> iMaxPalLen; int iRestLen = iTotalLen - iMaxPalLen; if (iRestLen <= iMaxPalLen) { cout << sA.substr(0, iMaxPalLen); cout << sP.substr(0, iRestLen); return; } if (iMaxPalLen < 3) { cout << "NIE"; return; } if ((iMaxPalLen & 1) != 0) Odd(); else Even(); } int main() { int t; // freopen("sample_input.txt", "r", stdin); // freopen("sample_output.txt", "w", stdout); cin >> t; for (int i = 1;; ++i) { Solve(); if (i == t) break; cout << endl; } } |
English