Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

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

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

Пожалуйста только на СИ, спасибо
Моя проблема: я не могу понять принцип для проверки содержания не более трёх команд умножения
 
В основном конечно решения этой задачи делают на петутхоне, но никто не мешает переписать, глянь видосики на ютубе по решению всех задач на компе ( насчёт ОГЭ не уверен, но для ЕГЭ они точно существуют ) и если что промотай на нужную тебе.
C++:
Expand Collapse Copy
#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
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
В основном конечно решения этой задачи делают на петутхоне, но никто не мешает переписать, глянь видосики на ютубе по решению всех задач на компе ( насчёт ОГЭ не уверен, но для ЕГЭ они точно существуют ) и если что промотай на нужную тебе.
C++:
Expand Collapse Copy
#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
}
эту часть я сделал, я не знаю как отсев сделать по условию : содержат не более трёх команд умножения
 
эту часть я сделал, я не знаю как отсев сделать по условию : содержат не более трёх команд умножения
Спасибо великому гуглу и ебаному Статграду ( больше него ненавижу наверное только Ларина ). По идее решение такое:
C++:
Expand Collapse Copy
#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. в правильности данного кодо-прикола сомневаюсь на самом деле...
 
попросил ChatGPT решить эту задачу, вот ответ:
C++:
Expand Collapse Copy
#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;
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
легче на питоне уже научится писать чем эту хуйню ебаную разбирать
 
легче на питоне уже научится писать чем эту хуйню ебаную разбирать
Да плюсы просто сложно читаемые +понять немного сложнее
Но по мне так ничего сложного :nomouth:
 
Назад
Сверху Снизу