Информатика, вопрос задал Lelinda , 6 лет назад

СРОЧНО!!! Калькулятор С++
Имеется калькулятор, который выполняет три операции:

прибавить к числу X единицу;
умножить число X на 2;
умножить число X на 3.
Определите, какое наименьшее число операций необходимо для того, чтобы получить из числа 1 заданное число N.

Входные данные:
Программа получает на вход одно число, не превосходящее 106.

Выходные данные:
Требуется вывести одно число: наименьшее количество искомых операций.

Приложения:

Lelinda: n = int(input())
a = [0] * (n + 1)
for i in range(2, n + 1):
if i % 2 == 0 and i % 3 == 0:
a[i] = min(a[i - 1], a[i // 2], a[i // 3]) + 1
elif i % 2 == 0:
a[i] = min(a[i - 1], a[i // 2]) + 1
elif i % 3 == 0:
a[i] = min(a[i - 1], a[i // 3]) + 1
else:
a[i] = a[i - 1] + 1
print(a[n])
Lelinda: почему этот код неправильный?

Ответы на вопрос

Ответил Arkassssha
0

Код программы на языке C++:

#include <iostream>

#include <locale>

using namespace std;

int main(void) {

setlocale(LC_ALL, "Russian");

int x, kol = 0;

cout << "Введите число:" << endl;

cin >> x;

while (x != 1) {

 if (x % 2 == 0) {

  x /= 2;

  ++kol;

 }

 else {

  if (x % 3 == 0) {

   x /= 3;

   ++kol;

  }

  else {

   x -= 1;

   ++kol;

  }

 }

}

cout << "Количество операций: " << kol << endl;

}

Новые вопросы