Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <algorithm>
  4. #include <string>
  5. #include <iomanip>
  6. #include <vector>
  7. #define Alesh
  8. using namespace std;
  9. int main()
  10. {
  11.   int start, end, n, y = 0;
  12.   setlocale(LC_ALL, "rus");
  13.   cout << "Исходное число: ";
  14.   cin >> start;
  15.   cout << "Конечное число: ";
  16.   cin >> end;
  17.   n = end - start + 1;
  18. #ifndef Alesha
  19.   vector <int> programms(end + 1, 0);
  20.   vector <int> slojenie;
  21.   vector <int> umnojenie;
  22.   vector <int> soderjit;
  23.   vector <int> NEsoderjit;
  24.   string temp;
  25.   cout << "Шаги: " << endl;
  26.   string empty;
  27.   getline(cin, empty);
  28.   getline(cin, temp);
  29.   for (int i = 0; i < temp.size(); i++) {
  30.     if (temp[i] == '*') {
  31.       umnojenie.push_back(int(temp[i + 1]) - 48);
  32.     }
  33.     else if (temp[i] == '+') {
  34.       slojenie.push_back(int(temp[i + 1]) - 48);
  35.     }
  36.   }
  37.   sort(umnojenie.begin(), umnojenie.end());
  38.   sort(slojenie.begin(), slojenie.end());
  39.   cout << "Траектория содержит: ";
  40.   string temp2;
  41.   getline(cin, temp2);
  42.   if (temp2.size() < 2){
  43.     for (int i = 0; i < temp2.size(); i++){
  44.       soderjit.push_back(temp2[i]);
  45.     }
  46.   }
  47.   else {
  48.   for (int i = 0; i < temp2.size(); i++) {
  49.     if (temp2[i] >= '1' && temp2[i] <= '9') {
  50.       if (temp2[i + 1] >= '1' && temp2[i + 1] <= '9' && i != temp2.size() - 1) {
  51.         soderjit.push_back((temp2[i] - '0') * 10 + (temp2[i + 1] - '0'));
  52.       }
  53.       else if (i != 0 && (temp2[i - 1] < 48 || temp2[i - 1] > 57)) soderjit.push_back(temp2[i] - '0');
  54.       else if (i == 0) soderjit.push_back(temp2[i] - '0');
  55.     }
  56.   }
  57.   soderjit.push_back(end);
  58.   }
  59.   sort(soderjit.begin(), soderjit.end());
  60.   cout << "Траектория НЕ содержит: ";
  61.   string temp3;
  62.   getline(cin, temp3);
  63.   if (temp3.size() < 2){
  64.     for (int i = 0; i < temp3.size(); i++){
  65.       NEsoderjit.push_back(temp3[i] - '0');
  66.     }
  67.   }
  68.   else {
  69.   for (int i = 0; i < temp3.size(); i++) {
  70.     if (temp3[i] >= '1' && temp3[i] <= '9') {
  71.       if (temp3[i + 1] >= '1' && temp3[i + 1] <= '9' && i != temp3.size() - 1) {
  72.         NEsoderjit.push_back((temp3[i] - '0') * 10 + (temp3[i + 1] - '0'));
  73.       }
  74.       else if (i != 0 && (temp3[i - 1] < 48 || temp3[i - 1] > 57)) NEsoderjit.push_back(temp3[i] - '0');
  75.       else if (i == 0) NEsoderjit.push_back(temp3[i] - '0');
  76.     }
  77.   }
  78.   }
  79.   sort(NEsoderjit.begin(), NEsoderjit.end());
  80.   for (int i = 0; i < NEsoderjit.size(); i++) {
  81.     programms[NEsoderjit[i]] = 0;
  82.   }
  83.   programms[start] = 1;
  84.   int now = start;
  85.   for (int i = 0; i < soderjit.size(); i++) {
  86.     for (int j = now; j <= soderjit[i]; j++) {
  87.       for (int p = 0; p < NEsoderjit.size(); p++) {
  88.         if (j != NEsoderjit[p]) {
  89.           for (int k = 0; k < slojenie.size(); k++) {
  90.             if (j - slojenie[k] >= now) {
  91.               programms[j] += programms[j - slojenie[k]];
  92.             }
  93.           }
  94.           for (int h = 0; h < umnojenie.size(); h++) {
  95.             if (j % umnojenie[h] == 0 && j / umnojenie[h] >= now) {
  96.               programms[j] += programms[j / umnojenie[h]];
  97.             }
  98.           }
  99.         }
  100.         else {
  101.           programms[j] = 0;
  102.           break;
  103.         }
  104.       }
  105.     }
  106.     now = soderjit[i];
  107.   }
  108.   for (int i = start; i < end + 1; i++)
  109.   {
  110.     cout << i << "---------------" << programms[i] << endl;
  111.   }
  112. #endif
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement