C++ Вопрос Напишите пожалуйста решение для данного типа задачи

Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
  1. Прибавь 2
  2. Умножь на 3
  3. Умножь на 5
Первая команда увеличивает число на экране на 2, вторая умножает его на 3, третья – умножает на 5. Сколько существует различных программ, которые преобразуют исходное число 2 в число 200 и содержат не более трёх команд умножения?

Пожалуйста только на СИ, спасибо
Моя проблема: я не могу понять принцип для проверки содержания не более трёх команд умножения
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
В основном конечно решения этой задачи делают на петутхоне, но никто не мешает переписать, глянь видосики на ютубе по решению всех задач на компе ( насчёт ОГЭ не уверен, но для ЕГЭ они точно существуют ) и если что промотай на нужную тебе.
C++:
#include <stdio.h>

int Solver(int x) {
    if (x == 200)
        return 1;
    if (x > 200)
        return 0;
    
    return Solver(x + 2) + Solver(x * 3) + Solver(x * 5);
}

int main()
{
    printf("returned value for 2: %i", Solver(2)); // 805
}
 
Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
В основном конечно решения этой задачи делают на петутхоне, но никто не мешает переписать, глянь видосики на ютубе по решению всех задач на компе ( насчёт ОГЭ не уверен, но для ЕГЭ они точно существуют ) и если что промотай на нужную тебе.
C++:
#include <stdio.h>

int Solver(int x) {
    if (x == 200)
        return 1;
    if (x > 200)
        return 0;
   
    return Solver(x + 2) + Solver(x * 3) + Solver(x * 5);
}

int main()
{
    printf("returned value for 2: %i", Solver(2)); // 805
}
эту часть я сделал, я не знаю как отсев сделать по условию : содержат не более трёх команд умножения
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
эту часть я сделал, я не знаю как отсев сделать по условию : содержат не более трёх команд умножения
Спасибо великому гуглу и ебаному Статграду ( больше него ненавижу наверное только Ларина ). По идее решение такое:
C++:
#include <stdio.h>

int Solver(int x, int p) {
    if(p < 0)
    return 0;
    if (x == 200)
        return 1;
    if (x > 200)
        return 0;
    int a = Solver(x + 2, p);
    int b = Solver(x * 3, p - 1);
    int c = Solver(x * 5, p - 2);
    return a + b + c;
}

int main()
{
    printf("returned value for 2: %i", Solver(2, 3)); // 502
}
Пожалуйста, авторизуйтесь для просмотра ссылки.


P.s. в правильности данного кодо-прикола сомневаюсь на самом деле...
 
iq abuser
Пользователь
Статус
Оффлайн
Регистрация
16 Апр 2021
Сообщения
649
Реакции[?]
138
Поинты[?]
1K
попросил ChatGPT решить эту задачу, вот ответ:
C++:
#include <iostream>

int main() {
  int count = 0;

  // Перебор всех возможных последовательностей команд
  for (int a = 0; a <= 3; a++) {
    for (int b = 0; b <= 3; b++) {
      for (int c = 0; c <= 3; c++) {
        // Пропускаем случаи, когда число команд умножения больше 3
        if (a + b + c > 3) continue;

        // Вычисляем результат выполнения последовательности команд
        int result = 2;
        for (int i = 0; i < a; i++) result *= 3;
        for (int i = 0; i < b; i++) result *= 5;
        for (int i = 0; i < c; i++) result += 2;

        // Если результат равен 200, увеличиваем счетчик
        if (result == 200) count++;
      }
    }
  }

  std::cout << "Количество различных программ: " << count << std::endl;
  return 0;
}
 
Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
легче на питоне уже научится писать чем эту хуйню ебаную разбирать
 
Начинающий
Статус
Оффлайн
Регистрация
11 Апр 2020
Сообщения
57
Реакции[?]
9
Поинты[?]
0
легче на питоне уже научится писать чем эту хуйню ебаную разбирать
Да плюсы просто сложно читаемые +понять немного сложнее
Но по мне так ничего сложного :nomouth:
 
Новичок
Статус
Оффлайн
Регистрация
19 Дек 2022
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Как вариант сделать переменную-счетчик, после каждого умножения делай i++, и проверяй, чтобы (i < 3)
 
Сверху Снизу