Интересная задачка :)

Июль 25, 2008 7:14 дп автор Артем Голубев  |  Рубрики: RubyOnRails  |  Метки: No Tags  

Задачка, если честно, из моего дества. В школе мне попалась.

Собственно: дан грузик некоторого целого веса, аптекарские весы (с чашачками такие) и
набор грузиков с весами 1, 3, 9, 27, … (в наборе каждого веса грузик есть только в 1 экземпляре).
Требуется написать программу (скажем на руби), которая будет уравновешивать 1-й грузик грузиками
из набора, причем класть грузики можно на обе чашечки.

А для Настоящих Программистов продолжение: выяснить будет ли алгоритм конечным (доказать конечность или бесконечность).
В случае если вы считаете его конечным, оценить его сложность и кол-во необходимых грузиков (опять же с доказательством, ну или доказать невозможность такой оценки) :)
Удачи в развлекаловке! :)

1 Star2 Stars3 Stars4 Stars5 Stars (5 votes, average: 4.2 out of 5)
Loading ... Loading ...

Добавить комментарий »

Тимур Вафин:

http://rubyquiz.com/ тема
Задачку надо решить ))

( Comment от Тимур Вафин — Июль 25, 2008 @ 12:08 пп )
Тимур Вафин:

Задачка между прочим для математиков =)
Другое дело, что хороший программист должен обладать хорошей математической поготовкой

( Comment от Тимур Вафин — Июль 25, 2008 @ 12:09 пп )
Артем Голубев:

Тимур, причем тут математики. Эта была задача по программированию в школе.
Там же надо составить алгоритм. А вот всякие доказательства и оценки, опять же
computer science. Каждый программист должен знать.

( Comment от Артем Голубев — Июль 25, 2008 @ 6:33 пп )
Артем Голубев:

Этот рубиквиз реально дурацкий сайт. Чувак там говорит, что типа посылайте все мне по почте или в куонференции. Полный маразм. Почему я не могу засабмитить задачку или решение прямо на сайте (пусть даже ничего сразу не покажется)?

( Comment от Артем Голубев — Июль 25, 2008 @ 6:44 пп )
Айрат Натфуллин:

Т.к. гири это степени тройки, то логично её решать в тройчной системе исчесления.

Пошел думать как…

p.s. Тимур, помнишь, как эту задачку решал Стец?) Сколько он мне не объяснял, я так и не понял тогда алгоритма)

( Comment от Айрат Натфуллин — Июль 29, 2008 @ 2:42 пп )
Тимур Вафин:

А он ее решил?

( Comment от Тимур Вафин — Июль 29, 2008 @ 2:51 пп )
Айрат Натфуллин:

да, решил.
я только не помню какие именно гири тогда были
потому что, к примеру, если 1,2,4,8… то она решается элементарно

( Comment от Айрат Натфуллин — Июль 30, 2008 @ 9:59 дп )
Айрат Натфуллин:

yes! решил!

всё никак не мог понять как же использовать троичную, потом допёрло, что вместо 2 надо писать +1-1, почитал - оказалось это есть симметричная система исчисления

на примерах:
1.
67[10] = 2111[3] => 1(-1)111
минус значит что соответствующую гирю надо класть на чашу 1го грузика
получаем
81 + 9 + 3 + 1 ? 67 + 27
94 == 94
2.
43[10] = 1121[3] => 11(+1-1)1 => 1 (+1+1)(-1)1 => 12(-1)1 => 2(-1)(-1)1 => 1(-1)(-1)(-1)1
проверяем
81 + 1 ? 43 + 27 +9 + 3
82 == 82

клево! самому понравилось;)
эх, есть еще порох в пороховницах))

( Comment от Айрат Натфуллин — Июль 30, 2008 @ 10:23 дп )
Артем Голубев:

Какова сложность алгоритма и максимальное кол-во необходимых грузиков?

( Comment от Артем Голубев — Июль 30, 2008 @ 5:42 пп )
Айрат Натфуллин:

= сложности преобразования числа из десятичной в симметричную троичную (не знаю, можно ли сразу в неё перевести)
или же, в случае как я делал: сложность алгоритма перевода из десятичной в троичную (это, если не ошибаюсь, log(3)N) + линейное преобразование = O(N)
log(3)N + O(N)

а что значит максимальное количество грузиков?
если это максимальное количество грузиков, которое может понадобиться для N, то не больше, чем K = min k : N

( Comment от Айрат Натфуллин — Июль 31, 2008 @ 9:51 дп )
Айрат Натфуллин:

(формула не отобразилась в предыдущем коммента)
K = min k : N < 3^k

( Comment от Айрат Натфуллин — Июль 31, 2008 @ 9:52 дп )
Артем Голубев:

Оценка сложности верна, но можно дать более точную :)

( Comment от Артем Голубев — Июль 31, 2008 @ 5:30 пп )

Оставить комментарий