Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- string reverseStr(string& line) {
- string reverseLine = "";
- for (int i = line.length() - 1; i >= 0; --i) {
- reverseLine += line[i];
- }
- return reverseLine;
- }
- string makeNewLine(string& oldLine) {
- string seqZero = "", line = reverseStr(oldLine);
- while (line.find('0') == 0) {
- seqZero += "0";
- line.erase(0, 1);
- }
- int posZero = line.find('0');
- if (posZero != -1) {
- int num = line[posZero - 1];
- line[posZero - 1] = line[posZero];
- line[posZero] = num;
- }
- seqZero += line;
- line = reverseStr(seqZero);
- return line;
- }
- void makeSeq(int n, int k) {
- string line = "";
- for (int i = 0; i < n - k; ++i) {
- line += "0";
- }
- for (int i = 0; i < k; ++i) {
- line += "1";
- }
- cout << line << endl;
- while (line.find('0') != k) {
- string newL = makeNewLine(line);
- line = newL;
- cout << line << endl;
- }
- }
- int main() {
- int n, k;
- cin >> n >> k;
- if (k == 0) {
- for (int i = 0; i < n; ++i) {
- cout << "0";
- }
- } else if (k == n) {
- for (int i = 0; i < n; ++i) {
- cout << "1";
- }
- } else {
- makeSeq(n, k);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement