#include <iostream>
using namespace std;
// Funkcja rysująca zbiór Cantora na danym poziomie
void drawCantor(int x, int width, int level) {
if (level == 0) {
for (int i = 0; i < width; i++)
cout << "-";
cout << endl;
return;
}
int third = width / 3;
// Lewa część
drawCantor(x, third, level - 1);
// Środkowa część (przerwa)
for (int i = 0; i < third; i++)
cout << " ";
cout << endl;
// Prawa część
drawCantor(x, third, level - 1);
}
int main() {
int level = 3;
cout << "Podaj stopien zbioru Cantora (np. 3 lub 6): ";
cin >> level;
if (level < 0) {
cout << "Stopien musi byc >= 0!" << endl;
return 1;
}
int width = 1;
for (int i = 0; i < level; i++)
width *= 3;
drawCantor(0, width, level);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRnVua2NqYSByeXN1asSFY2EgemJpw7NyIENhbnRvcmEgbmEgZGFueW0gcG96aW9taWUKdm9pZCBkcmF3Q2FudG9yKGludCB4LCBpbnQgd2lkdGgsIGludCBsZXZlbCkgewogICAgaWYgKGxldmVsID09IDApIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoOyBpKyspCiAgICAgICAgICAgIGNvdXQgPDwgIi0iOwogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaW50IHRoaXJkID0gd2lkdGggLyAzOwoKICAgIC8vIExld2EgY3rEmcWbxIcKICAgIGRyYXdDYW50b3IoeCwgdGhpcmQsIGxldmVsIC0gMSk7CgogICAgLy8gxZpyb2Rrb3dhIGN6xJnFm8SHIChwcnplcndhKQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aGlyZDsgaSsrKQogICAgICAgIGNvdXQgPDwgIiAiOwogICAgY291dCA8PCBlbmRsOwoKICAgIC8vIFByYXdhIGN6xJnFm8SHCiAgICBkcmF3Q2FudG9yKHgsIHRoaXJkLCBsZXZlbCAtIDEpOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBsZXZlbCA9IDM7CiAgICBjb3V0IDw8ICJQb2RhaiBzdG9waWVuIHpiaW9ydSBDYW50b3JhIChucC4gMyBsdWIgNik6ICI7CiAgICBjaW4gPj4gbGV2ZWw7CgogICAgaWYgKGxldmVsIDwgMCkgewogICAgICAgIGNvdXQgPDwgIlN0b3BpZW4gbXVzaSBieWMgPj0gMCEiIDw8IGVuZGw7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgaW50IHdpZHRoID0gMTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGV2ZWw7IGkrKykKICAgICAgICB3aWR0aCAqPSAzOwoKICAgIGRyYXdDYW50b3IoMCwgd2lkdGgsIGxldmVsKTsKCiAgICByZXR1cm4gMDsKfQo=