#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): ";
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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gZnVua2NqYSByeXN1asSFY2EgamVkbsSFIGxpbmnEmQp2b2lkIGNhbnRvcihpbnQgbGV2ZWwsIGludCBtYXhMZXZlbCkgewogICAgaWYgKGxldmVsID09IDApIHsKICAgICAgICBjb3V0IDw8ICIjIjsKICAgIH0gZWxzZSB7CiAgICAgICAgY2FudG9yKGxldmVsIC0gMSwgbWF4TGV2ZWwpOwoKICAgICAgICAvLyDFm3JvZGtvd2EgcHJ6ZXJ3YQogICAgICAgIGludCBzcGFjZXMgPSAxOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGV2ZWwgLSAxOyBpKyspIHsKICAgICAgICAgICAgc3BhY2VzICo9IDM7CiAgICAgICAgfQogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3BhY2VzOyBpKyspIHsKICAgICAgICAgICAgY291dCA8PCAiICI7CiAgICAgICAgfQoKICAgICAgICBjYW50b3IobGV2ZWwgLSAxLCBtYXhMZXZlbCk7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW50IHN0b3BpZW47CiAgICBjb3V0IDw8ICJQb2RhaiBzdG9waWVuIChucC4gMyBsdWIgNik6ICI7CiAgICBjaW4gPj4gc3RvcGllbjsKCiAgICBpZiAoc3RvcGllbiA8IDAgfHwgc3RvcGllbiA+IDYpIHsKICAgICAgICBjb3V0IDw8ICJQb2RhaiBzdG9waWVuIDDigJM2ISIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAvLyByeXN1amVteSBrb2xlam5lIHBvemlvbXkKICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IHN0b3BpZW47IGkrKykgewogICAgICAgIGNhbnRvcihpLCBzdG9waWVuKTsKICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=