Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // პირველ ორ ხაზს ყურადღება არ მიაქციოთ...
- #include <bits/stdc++.h>
- using namespace std;
- // NOT ფუქნცია. არგუმენტად იღებს string-ს, აბრუნებს string-ს.
- string NOT(string s) {
- // ყოველი c სიმბოლოსთვის s-ში: თუ c == '0', მაშინ მის ადგილზე შევინახოთ '1', თუ არა და მის ადგილზე შევინახოთ '0'
- for (char & c : s) if (c == '0') c = '1'; else c = '0';
- // დავაბრუნოთ s (უკვე გადაკეთებული)
- return s;
- }
- // პასუხის გამოსათვლელი ფუნქცია. არგუმენტად იღებს n-ს, აბრუნებს string-ების სიმრავლეს.
- set <string> S(int n) {
- // თუ გვეკითხებიან პასუხს n = 0-სთვის, დავაბრუნოთ {0; 1} სიმრავლე
- if (n == 0) return {"0", "1"};
- // string-ების სიმრავლე "prev"-ში შევინახოთ პასუხი n-1-სთვის.
- set <string> prev = S(n-1);
- // "answer" სიმრავლის აღწერა. შემდგომ ამ სიმრავლეს ვაბრუნებთ.
- set <string> answer;
- // ყოველი string ტიპის x-სთვის "prev" სიმრავლეში...
- for (string x : prev) {
- // "answer" სიმრავლეში შევინახოთ x "შეერთებული" კიდევ ერთ x-თან და x "შეერთებული" NOT x-თან.
- answer.insert(x + x);
- answer.insert(x + NOT(x));
- }
- // დავაბრუნოთ "answer" სიმრავლე
- return answer;
- }
- int main() {
- // main() ფუნქცია -- აქედან იწყება პროგრამა
- // მთელი (integer) ტიპის n ცვლადის აღწერა
- int n;
- // n-ის შემოტანა
- cin >> n;
- // Sn-ში შევინახოთ პასუხი n-სთვის
- auto Sn = S(n);
- // ყოველი string ტიპის x-სთვის Sn-ში გამოვბეჭდოთ x
- for (string x : Sn) cout << x << "\n";
- return 0;
- }
Add Comment
Please, Sign In to add comment