|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.02.2019, 10:22 | #1 |
Пользователь
Регистрация: 07.11.2017
Сообщений: 42
|
Кузнечик
Прошу помощи при решении задачи. На первый взгляд как-бы простая, но при написании алгоритма проходит лишь 25%. Собственно условие таково:
Кузнечик долго сидел на делении 0 числовой прямой, так долго, что придумал инновационную методологию своего перемещения. Так что за каждую итерацию движения он выполняет ровно два прыжка, перемещаясь сначала на a, а затем на b единичных отрезков по числовой прямой, причем, если число положительное, то он движется вправо, а если отрицательное, то влево. Продолжительность скачка в секундах равна соответствующему количеству единичных отрезков, на которую перемещается кузнечик. Например, если a=3, а b=2, то через 3 сек. он будет на делении 3, а через 5 сек. от начала движения попадет на отметку 1. Далее, на 8 секунде переместится на деление 4, а на 10 секунде вернется на 2. При заданных a и b найти сколько необходимо времени в секундах, чтобы допрыгнуть до отметки x числовой прямой или вывести -1, если это невозможно. Мой код: Код:
|
19.02.2019, 10:48 | #2 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Задача, несмотря на американский "оживляж" всякой фигней, сформулирована через ^опу. Если он попадает в x через a, то b он уже не прыгает, т.е. два прыжка на каждом шаге не обязательны ? А если прыгает, то эти дурные a и b можно заменить одним a+b и делить х на эту сумму. Если целое - все ясно, если дробное, то -1. Кстати, в примере b = -2.
Глядя на это безобразие, приходит на ум Задорновское : "Ну тупые!" - не по отношению к американским детишкам, а к составителям этих бредней, своим "оживляжем" затмевающим суть, и к нашим, обезьянно повторяющим эту галиматню. Впрочем, дебилизация - на марше! Последний раз редактировалось digitalis; 19.02.2019 в 10:52. |
19.02.2019, 11:00 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Удивительно что 25%. Твой способ решения вообще ни о чем.
Что будет если x=0? Что будет если a=-b? А если при этом x=2 и a=3? Как решать если x>0? А если x<0? А если перепрыгнет отметку x, то достиг её или нет?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
19.02.2019, 12:00 | #4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
давайте начнём с того, что Вы уже пример неверно скопировали.
b в вашем примере -2 (минус 2) согласно - https://www.e-olymp.com/ru/problems/8701 Цитата:
p.s. судя по контрпримеру (см.3 -2 1), достигнуть точки x - это оказаться в данной точке после очередной итерации (ровно через два прыжка). x может быть как положительным, так и отрицательным. |
|
19.02.2019, 16:37 | #5 | |
Пользователь
Регистрация: 07.11.2017
Сообщений: 42
|
Цитата:
Код:
|
|
19.02.2019, 16:43 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Код:
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
19.02.2019, 17:04 | #7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
я бы решал эту задачу так:
Код:
иначе проверка такая Код:
- это условие, что шаг движения и x находятся по одну сторону от нуля (имеют одинаковый знак) (abs(x) mod abs(step) = 0) - это проверка того, что позиция x кратна шагу. p.p.s. моему решению слепо я бы доверять не стал - проверьте внимательно на разных входных данных. допускаю, что я мог и накосячить. |
19.02.2019, 17:12 | #8 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
там по идее еще на каком то этапе может достичь x сделав только шаг a
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
19.02.2019, 17:17 | #9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
19.02.2019, 17:46 | #10 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Так что задача сводится к банальному: за сколько стограммовых рюмок можно точно осушить заданной емкости бутыль. Безо всяких прыжков, итераций, инноваций и кузнечиков.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кузнечик... | daniil123 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 30.01.2012 10:54 |