0 / 0 / 0
Регистрация: 25.06.2017
Сообщений: 60
1

Минимальное количество шагов

20.01.2019, 10:03. Показов 2823. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго дня!

Прошу натолкнуть на мысль как решать данную задачу.

На вход дается 2 числа, X и Y. По условию X<=Y.
За 1 шаг я могу либо увеличить X на 2, либо увеличить X в 3 раза.
За какое минимальное кол-во шагов я смогу получить из числа X число Y, если это возможно.

Возможно существует какой-то алгоритм для решения такого типа задач, буду благодарен если натолкнете на него.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2019, 10:03
Ответы с готовыми решениями:

Выполнить циклический сдвиг массива вниз или вверх на количество шагов
3 Данный рваный (зубчатый) массив, заполненный случайными действительными числами. Выполнить...

Найти количество шагов, которые может сделать конь на шахматной доске для прохождения всего поля
не получается сделать код программы на си шарп. условие: программа должна находить количество...

Шахматы: Найти минимальное количество шагов для достижения одним конём другого
На шахматной доске два коня. Один статичен, второй динамичен. Найти минимальное количество шагов...

Минимальное количество шагов шахматного коня, чтобы достигнуть определенной позиции на шахматной доске
Всем доброго времени суток) У меня такой вопрос: есть неограниченная шахматная доска, с...

12
Эксперт .NET
1968 / 1427 / 337
Регистрация: 15.06.2012
Сообщений: 5,357
Записей в блоге: 3
20.01.2019, 11:08 2
начиная с X >= 1 увеличение в 3 раза будет давать больший прирост, нежели +2. До этого числа -- вообще идти в обратную сторону. Дальше либо развлекатся с выводом формулы (мне лень) либо тупо циклом (на больших числах будет работать медленее).
0
0 / 0 / 0
Регистрация: 25.06.2017
Сообщений: 60
21.01.2019, 09:46  [ТС] 3
UP! Тема актуальна! Идей нет
0
Модератор
Эксперт .NET
15827 / 10977 / 2850
Регистрация: 21.04.2018
Сообщений: 32,224
Записей в блоге: 2
21.01.2019, 10:31 4
Цитата Сообщение от lexatorgas Посмотреть сообщение
На вход дается 2 числа, X и Y. По условию X<=Y.
За 1 шаг я могу либо увеличить X на 2, либо увеличить X в 3 раза.
За какое минимальное кол-во шагов я смогу получить из числа X число Y, если это возможно.
Если надо получить именно Y? а не число большее или равное Y, то условиям задачи это не всегда возможно.
Самый простой пример. X - чётное число, Y - нечётное (или наоборот). Никакими комбинациями +2 и *3 из X получить Y нельзя.

Уточните условия задачи.

И эта задача всё же относится к математике (арифметике), а не к программированию. Что здесь программировать?
0
1517 / 908 / 328
Регистрация: 17.05.2015
Сообщений: 3,431
21.01.2019, 11:16 5
Цитата Сообщение от lexatorgas Посмотреть сообщение
Идей нет
чего тут думать?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 static void Main(string[] args)
        {
            int X = int.Parse(Console.ReadLine());
            int Y = int.Parse(Console.ReadLine());
            int counter = 0;
            for (; ; )
            {
                if (X * 3 <= Y)
                {
                    X *= 3;
                    counter++;
                    continue;
                }
                else if (X + 2 <= Y)
                {
                    X += 2;
                    counter++;
                    continue;
                }
                if (X >= Y || X + 2 > Y) break;
            }
            if (X == Y) Console.WriteLine($"Можно получить за {counter} шагов");
            else Console.WriteLine("Нельзя получить");
            Console.Read();
        }
0
Модератор
Эксперт .NET
15827 / 10977 / 2850
Регистрация: 21.04.2018
Сообщений: 32,224
Записей в блоге: 2
21.01.2019, 11:34 6
Цитата Сообщение от Рядовой Посмотреть сообщение
чего тут думать?
Решение не всегда даст верный ответ.
А при X=0, вообще, зависнет.
0
1517 / 908 / 328
Регистрация: 17.05.2015
Сообщений: 3,431
21.01.2019, 11:43 7
Элд Хасп, ну да, 0 и отрицательные не учитывал

Добавлено через 4 минуты
там по хорошему каждый шаг надо чекать расстояние до Y,
но автора надо было натолкнуть на решение
0
0 / 0 / 0
Регистрация: 25.06.2017
Сообщений: 60
21.01.2019, 11:55  [ТС] 8
Цитата Сообщение от Рядовой Посмотреть сообщение
чего тут думать
Ну смотри, если на ввод даем 12 и 44 программа выводит 5 шагов, хотя правильно будет 3.

12+2=14
14*3 = 42
42+2 = 44

Добавлено через 2 минуты
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Уточните условия задачи.
Условия такие: X всегда меньше либо равно Y, 1<=Y<=100.
0
Модератор
Эксперт .NET
15827 / 10977 / 2850
Регистрация: 21.04.2018
Сообщений: 32,224
Записей в блоге: 2
21.01.2019, 11:57 9
Цитата Сообщение от Рядовой Посмотреть сообщение
ну да, 0 и отрицательные не учитывал
Ну, не только. Возьмите X=2, Y = 12. Ваше решение даст ответ 4, а правильный ответ 2.
Цитата Сообщение от Рядовой Посмотреть сообщение
но автора надо было натолкнуть на решение
При правильных условия (ТЗ - неполное), решение чисто арифметическое. На уровне 3-4 класса школы.
Что здесь программировать не вижу.
0
1517 / 908 / 328
Регистрация: 17.05.2015
Сообщений: 3,431
21.01.2019, 12:04 10
Согласен, с ходу решить не удалось
0
Модератор
Эксперт .NET
15827 / 10977 / 2850
Регистрация: 21.04.2018
Сообщений: 32,224
Записей в блоге: 2
21.01.2019, 12:10 11
lexatorgas, если условия задачи звучат так, на каком шаге X станет больше или равно Y, то решение такое:
  • если оба X и Y < 1, то от X к Y "идём" только через +2. Отсюда количество шагов = модулю (X-Y) делённому на 2 с округлением до ближайшего большего целого.
  • если X >= 1, то "идём" только через *3. Отсюда количество логарифм по основанию три от Y/X, с округлением результата до ближайшего большего целого.
  • если X < 1, а Y >=1, то считаем до 1 по первому методу, после по второму. Результат их сумма.
0
0 / 0 / 0
Регистрация: 25.06.2017
Сообщений: 60
21.01.2019, 12:12  [ТС] 12
Цитата Сообщение от Элд Хасп Посмотреть сообщение
если условия задачи звучат так,
Уточнил условия: X и Y всегда больше 0
0
Модератор
Эксперт .NET
15827 / 10977 / 2850
Регистрация: 21.04.2018
Сообщений: 32,224
Записей в блоге: 2
21.01.2019, 12:19 13
Цитата Сообщение от lexatorgas Посмотреть сообщение
Уточнил условия: X и Y всегда больше 0
Решение выше. Оно не меняется, но можно чуть упростить.
  • если оба X и Y < 1, то от X к Y нужен только 1 шаг.
  • если X >= 1, то "идём" только через *3. Отсюда количество - логарифм по основанию три от Y/X, с округлением результата до ближайшего большего целого.
  • если X < 1, а Y >=1, то количество - логарифм по основанию три от Y/(X+2), с округлением результата до ближайшего большего целого и плюс один.
0
21.01.2019, 12:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2019, 12:19
Помогаю со студенческими работами здесь

Определить минимальное количество шагов, необходимых для того, чтобы в одном из сосудов получить заданный объем
Есть два сосуда: в один сосуд помещается a литров воды, а во вторую - b литров. Определить...

Минимальное число шагов
Задание такое: Дано целое неотрицательное число N (0&lt;=N&lt;=1000000). С ним можно делать следующее:...

Задача о перемещении прыгуна за минимальное число шагов
Доброго всем времени суток. Помогите решить задачу. Дана матрица NxM.Ячейки матрицы заполнены 0....

Как за минимальное число шагов получить данный чертеж
Здравствуйте. Не могу разобраться с чертежником, помогите пожалуйста. Как за минимальное число...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru