#include <iostream>
using namespace std;
// funkcja rysująca jedną linię
void cantor(int level, int maxLevel) {
if (level == 0) {
cout << "#";
} else {
cantor(level - 1, maxLevel);
// środkowa przerwa
int spaces = 1;
for (int i = 0; i < level - 1; i++) {
spaces *= 3;
}
for (int i = 0; i < spaces; i++) {
cout << " ";
}
cantor(level - 1, maxLevel);
}
}
int main() {
int stopien;
cout << "Podaj stopien (np. 3 lub 6): 3 ";
cin >> stopien;
if (stopien < 0 || stopien > 6) {
cout << "Podaj stopien 0–6!" << endl;
return 0;
}
// rysujemy kolejne poziomy
for (int i = 0; i <= stopien; i++) {
cantor(i, stopien);
cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gZnVua2NqYSByeXN1asSFY2EgamVkbsSFIGxpbmnEmQp2b2lkIGNhbnRvcihpbnQgbGV2ZWwsIGludCBtYXhMZXZlbCkgewogICAgaWYgKGxldmVsID09IDApIHsKICAgICAgICBjb3V0IDw8ICIjIjsKICAgIH0gZWxzZSB7CiAgICAgICAgY2FudG9yKGxldmVsIC0gMSwgbWF4TGV2ZWwpOwoKICAgICAgICAvLyDFm3JvZGtvd2EgcHJ6ZXJ3YQogICAgICAgIGludCBzcGFjZXMgPSAxOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGV2ZWwgLSAxOyBpKyspIHsKICAgICAgICAgICAgc3BhY2VzICo9IDM7CiAgICAgICAgfQogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3BhY2VzOyBpKyspIHsKICAgICAgICAgICAgY291dCA8PCAiICI7CiAgICAgICAgfQoKICAgICAgICBjYW50b3IobGV2ZWwgLSAxLCBtYXhMZXZlbCk7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW50IHN0b3BpZW47CiAgICBjb3V0IDw8ICJQb2RhaiBzdG9waWVuIChucC4gMyBsdWIgNik6IDMgIjsKICAgIGNpbiA+PiBzdG9waWVuOwoKICAgIGlmIChzdG9waWVuIDwgMCB8fCBzdG9waWVuID4gNikgewogICAgICAgIGNvdXQgPDwgIlBvZGFqIHN0b3BpZW4gMOKAkzYhIiA8PCBlbmRsOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIC8vIHJ5c3VqZW15IGtvbGVqbmUgcG96aW9teQogICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gc3RvcGllbjsgaSsrKSB7CiAgICAgICAgY2FudG9yKGksIHN0b3BpZW4pOwogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==