Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2012, 16:18   #1
Kirill_Sokolov
Новичок
Джуниор
 
Регистрация: 13.10.2012
Сообщений: 1
Сообщение Задача Pascal!!!

Помогите пожалуйста решить задачу по Pascal

Фермеру Джону сообщили местоположение сбежавшей коровы, и он хочет поймать ее немедленно, Он начинает в точке N(0≤N≤100,000) на числовой прямой, а корова находится в точке K(0≤K≤100,000) на той же самой числовой прямой. У ФД есть два способа перемещения: пешая прогулка и телепортация.
Пешая прогулка: ФД может перейти из любой точки X в точки X-1 или X+1 за одну минуту
Телепортация: ФД может перейти из любой точки X в точку 2*X за одну минуту

Если корова не движется совсем, сколько времени может занять у ФД поймать ее?
Формат ввода
В первой строке два разделенных пробелом целых числа: N и K.

Формат вывода
Минимальное время в минутах, которое необходимо ФД для поимки коровы.

Примеры
Ввод Вывод
5 17 4

Пояснения: Фермер Джон начинает в точке 5, а корова в точке 17. Наибыстрый способ поймать корову - двигаться по пути: 5-10-9-18-17, который займет 4 минуты
Kirill_Sokolov вне форума Ответить с цитированием
Старый 17.10.2012, 20:47   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Могу предложить такой вариант:
1. Если положение фермера Джони правее положения коровы, то время равно пешему переходу, т.е. N-K. Это так, поскольку Джони может телепортироваться только вперед.
2. Если положение фермера Джони левее положения коровы:
Если положение коровы нечетное число, то вычитаем единицу.
Делим полученную координату на 2.
Смотрим положение фермера относительно полученной точки телепортации.
Если фермер правее точки телепортации, то если до коровы столько же ходов, сколько до точки телепортации + 1 (от фермера), то просто идём к корове, иначе идем к точке телепортации.
Если фермер левее точки телепортации, то повторяем п.2.

Конечно, при этом надо сохранить число делений и число единичных шагов.
Так,
Цитата:
Примеры
Ввод Вывод
5 17 4

Пояснения: Фермер Джон начинает в точке 5, а корова в точке 17. Наибыстрый способ поймать корову - двигаться по пути: 5-10-9-18-17, который займет 4 минуты
дает и такое решение (в соответствии с предложенным алгоритмом):
5-4-8-16-17

Как-то так можно ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача Pascal Cruzel Помощь студентам 2 15.02.2012 12:26
задача на pascal Froll Помощь студентам 1 08.11.2011 11:09
Задача в Pascal lordseko Фриланс 3 24.12.2010 13:04
Задача Pascal sizoichel Помощь студентам 0 23.12.2010 20:54