Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <algorithm>
- #include <string>
- #include <iomanip>
- #include <vector>
- #define Alesh
- using namespace std;
- int main()
- {
- int start, end, n, y = 0;
- setlocale(LC_ALL, "rus");
- cout << "Исходное число: ";
- cin >> start;
- cout << "Конечное число: ";
- cin >> end;
- n = end - start + 1;
- #ifndef Alesha
- vector <int> programms(end + 1, 0);
- vector <int> slojenie;
- vector <int> umnojenie;
- vector <int> soderjit;
- vector <int> NEsoderjit;
- string temp;
- cout << "Шаги: " << endl;
- string empty;
- getline(cin, empty);
- getline(cin, temp);
- for (int i = 0; i < temp.size(); i++) {
- if (temp[i] == '*') {
- umnojenie.push_back(int(temp[i + 1]) - 48);
- }
- else if (temp[i] == '+') {
- slojenie.push_back(int(temp[i + 1]) - 48);
- }
- }
- sort(umnojenie.begin(), umnojenie.end());
- sort(slojenie.begin(), slojenie.end());
- cout << "Траектория содержит: ";
- string temp2;
- getline(cin, temp2);
- if (temp2.size() < 2){
- for (int i = 0; i < temp2.size(); i++){
- soderjit.push_back(temp2[i]);
- }
- }
- else {
- for (int i = 0; i < temp2.size(); i++) {
- if (temp2[i] >= '1' && temp2[i] <= '9') {
- if (temp2[i + 1] >= '1' && temp2[i + 1] <= '9' && i != temp2.size() - 1) {
- soderjit.push_back((temp2[i] - '0') * 10 + (temp2[i + 1] - '0'));
- }
- else if (i != 0 && (temp2[i - 1] < 48 || temp2[i - 1] > 57)) soderjit.push_back(temp2[i] - '0');
- else if (i == 0) soderjit.push_back(temp2[i] - '0');
- }
- }
- soderjit.push_back(end);
- }
- sort(soderjit.begin(), soderjit.end());
- cout << "Траектория НЕ содержит: ";
- string temp3;
- getline(cin, temp3);
- if (temp3.size() < 2){
- for (int i = 0; i < temp3.size(); i++){
- NEsoderjit.push_back(temp3[i] - '0');
- }
- }
- else {
- for (int i = 0; i < temp3.size(); i++) {
- if (temp3[i] >= '1' && temp3[i] <= '9') {
- if (temp3[i + 1] >= '1' && temp3[i + 1] <= '9' && i != temp3.size() - 1) {
- NEsoderjit.push_back((temp3[i] - '0') * 10 + (temp3[i + 1] - '0'));
- }
- else if (i != 0 && (temp3[i - 1] < 48 || temp3[i - 1] > 57)) NEsoderjit.push_back(temp3[i] - '0');
- else if (i == 0) NEsoderjit.push_back(temp3[i] - '0');
- }
- }
- }
- sort(NEsoderjit.begin(), NEsoderjit.end());
- for (int i = 0; i < NEsoderjit.size(); i++) {
- programms[NEsoderjit[i]] = 0;
- }
- programms[start] = 1;
- int now = start;
- for (int i = 0; i < soderjit.size(); i++) {
- for (int j = now; j <= soderjit[i]; j++) {
- for (int p = 0; p < NEsoderjit.size(); p++) {
- if (j != NEsoderjit[p]) {
- for (int k = 0; k < slojenie.size(); k++) {
- if (j - slojenie[k] >= now) {
- programms[j] += programms[j - slojenie[k]];
- }
- }
- for (int h = 0; h < umnojenie.size(); h++) {
- if (j % umnojenie[h] == 0 && j / umnojenie[h] >= now) {
- programms[j] += programms[j / umnojenie[h]];
- }
- }
- }
- else {
- programms[j] = 0;
- break;
- }
- }
- }
- now = soderjit[i];
- }
- for (int i = start; i < end + 1; i++)
- {
- cout << i << "---------------" << programms[i] << endl;
- }
- #endif
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement