#include <iostream>
#include <string>
using namespace std;
// Funkcja generująca linię zbioru Cantora
string cantorLine(int level) {
if (level == 0)
return "-";
string prev = cantorLine(level - 1);
string space(prev.length(), ' ');
return prev + space + prev;
}
// Funkcja rysująca cały zbiór
void drawCantor(int level) {
string line = cantorLine(level);
for (int i = 0; i <= level; i++) {
cout << line << endl;
// przygotuj następną linię (usuń środkowe fragmenty)
string next = line;
int len = next.length();
for (int j = 0; j < len; j++) {
int k = j;
while (k > 0) {
if (k % 3 == 1) {
next[j] = ' ';
break;
}
k /= 3;
}
}
line = next;
}
}
int main() {
int stopien = 3;
cout << "Podaj stopień zbioru Cantora (np. 3 lub 6): ";
cin >> stopien;
if (stopien < 0) {
cout << "Stopień musi być >= 0!" << endl;
return 1;
}
drawCantor(stopien);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRnVua2NqYSBnZW5lcnVqxIVjYSBsaW5pxJkgemJpb3J1IENhbnRvcmEKc3RyaW5nIGNhbnRvckxpbmUoaW50IGxldmVsKSB7CiAgICBpZiAobGV2ZWwgPT0gMCkKICAgICAgICByZXR1cm4gIi0iOwoKICAgIHN0cmluZyBwcmV2ID0gY2FudG9yTGluZShsZXZlbCAtIDEpOwogICAgc3RyaW5nIHNwYWNlKHByZXYubGVuZ3RoKCksICcgJyk7CgogICAgcmV0dXJuIHByZXYgKyBzcGFjZSArIHByZXY7Cn0KCi8vIEZ1bmtjamEgcnlzdWrEhWNhIGNhxYJ5IHpiacOzcgp2b2lkIGRyYXdDYW50b3IoaW50IGxldmVsKSB7CiAgICBzdHJpbmcgbGluZSA9IGNhbnRvckxpbmUobGV2ZWwpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IGxldmVsOyBpKyspIHsKICAgICAgICBjb3V0IDw8IGxpbmUgPDwgZW5kbDsKCiAgICAgICAgLy8gcHJ6eWdvdHVqIG5hc3TEmXBuxIUgbGluacSZICh1c3XFhCDFm3JvZGtvd2UgZnJhZ21lbnR5KQogICAgICAgIHN0cmluZyBuZXh0ID0gbGluZTsKICAgICAgICBpbnQgbGVuID0gbmV4dC5sZW5ndGgoKTsKCiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBsZW47IGorKykgewogICAgICAgICAgICBpbnQgayA9IGo7CiAgICAgICAgICAgIHdoaWxlIChrID4gMCkgewogICAgICAgICAgICAgICAgaWYgKGsgJSAzID09IDEpIHsKICAgICAgICAgICAgICAgICAgICBuZXh0W2pdID0gJyAnOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgayAvPSAzOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBsaW5lID0gbmV4dDsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpbnQgc3RvcGllbiA9IDM7CgogICAgY291dCA8PCAiUG9kYWogc3RvcGllxYQgemJpb3J1IENhbnRvcmEgKG5wLiAzIGx1YiA2KTogIjsKICAgIGNpbiA+PiBzdG9waWVuOwoKICAgIGlmIChzdG9waWVuIDwgMCkgewogICAgICAgIGNvdXQgPDwgIlN0b3BpZcWEIG11c2kgYnnEhyA+PSAwISIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBkcmF3Q2FudG9yKHN0b3BpZW4pOwoKICAgIHJldHVybiAwOwp9