«Мишка очень любит мёд…»

«…Почему? Кто поймет? В самом деле, почему мед так нравится ему?»

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

А мишка тут вообще ни при чем.

Давайте последовательно. Вопрос номер 1. Есть бочка с медом и банка с дегтем. И ложка, ложка — это важно. Для удобства будем считать, что ложка имеет фиксированный объем. Не важно сколько, ну, допустим, 15 грамм. Т.е. никаких «налипаний на донышко» и капель, ложка — мера объема. Если смущает вязкость меда и дегтя, можно их заменить на воду и спирт. Дело вкуса, конечно.

Итак, берем ложку, зачерпываем ею деготь из банки и, ехидно оглянувшись, опускаем ее в бочку с медом. Мешаем. Потом зачерпываем (той же ложкой) полученную смесь и плюхаем в банку с дегтем. Снова мешаем.

Вопрос: чего теперь больше — меда в дегте или дегтя в меде?

Вопрос номер 2. Нужно найти наибольшее десятизначное натуральное число, которое делится на 36, при условии, что все цифры в этом числе разные.

Сама по себе эта задача довольно нелепа (ее принесла из школы дочка-пятиклассница), но в качестве простейшего тестового задания на написание алгоритма пригодна. Итак, нужно написать код на php, выполнение которого приводит к решению.

This entry was posted in Задачи and tagged . Bookmark the permalink.

9 Responses to «Мишка очень любит мёд…»

  1. Miracle Miracle says:

    По поводу второй задачи, толи я чего то не понял, толи
    1. Если число делиться на 36, то оно должно делиться на 9.
    2. Чтобы число делилось на 9, сумма его цифр должна делиться на 9.(признаки делимости)
    3. Если число 10 значное и все цифры различные, значит это все цифры от 0 до 9.
    4. Вычисляем их сумму это 9*10/2 = 45, т.е. оно в любом случае делиться на 9.
    5. теперь надо, чтобы оно делилось на 4, для этого надо, чтобы число, составленное из последних 2 цифр делилось на 4.
    6. Самое большое 10 значное число составленное из разных цифр это
    9876543210 (большие цифры, занимают главные разряды.)
    теперь подбираем, чтобы число делилось на 4, меняем 1 и 2 местами, получается
    9876543120, это число удовлетворяет условиям задачи. (делиться на 9 и на 4).
    Предположим, что есть число больше этого, тогда рассмотрим левые 7 цифр,
    для нашего случая это 9876543, и будем сравнивать по разрядно, начиная с самого большого, если у числа какой то разряд не равен нашему, то получается что он может быть только меньше.(так как мы использовали числа начиная с самого большого). значит левые 7 совпадают, ну а правые 3 – легко перебираются варианты их всего несколько, вот и получаем ответ 9876543120

    • Ну да. Фактически поиск ответа сводится к нахождению наибольшего числа из 4 вариантов (210, 201, 120, 102), которое без остатка делится на 4.
      Что едва ли является непосильной задачей. :)

      Если предполагалось, что кто-то станет писать код, решающий задачу перебором, то из этого предположения можно сделать два вывода:
      1. Автору задания пора в отпуск.
      2. Человека, который возьмется писать код, принимать на работу нельзя.

      Плохой, негодный пример. «Удаляю»

  2. Miracle Miracle says:

    Про мишку…
    Пусть забудем про 15, введем просто переменные
    m – это объем(или вес, ну не будем вдаваться в физику, думаю смысл понятен – будем считать жидкости однородные – с одинаковой плотностью:-)) бочки с медом
    n – банки с дегтем
    l – объем ложки.

    Тогда , мы зачерпнули ложку дегтя и опустили ее в мед, а потом перемешали, будем считать, что все размешали равномерно и опять зачерпнули, значит в ложке мед и деготь пропорционально объемам т.е. l/m, далее смотрим сколько мы меда зачерпнули – т.е. сколько потом положим в деготь.
    Раз сумма объемов дегтя и меда в ложке, равна объему ложки, а пропорции l/m, то получаем(выписки делать не буду, достаточно просто), что меда в ложке m*l/(m+l), а дегтя l*l/(m+l)
    1. Тогда получается, что дегтя осталось в бочке с медом l – l*l/(m+l) = (l(m+l)-l*l) / (m+l) = m*l/(m+l), собственно столько же, сколько меда в ложке, и следовательно будет положено в деготь.
    Т.е. ответ дегтя в меде, столько же, сколько меда в дегте:-)

  3. Miracle Miracle says:

    Про равномерное размешивание – это используется для того как раз, чтобы показать что в ложке пропорционально объемам деготь и мед. Если как вы говорите это не так, тогда и ваша картинка не может быть верно, потому что тогда вообще не понятно сколько мы зачерпнули – может мы только мед зачерпнули или только деготь.

    • тогда вообще не понятно сколько мы зачерпнули – может мы только мед зачерпнули или только деготь

      Ну да, все правильно, именно так. Совершенно не важно, как мы мешали, мешали ли вообще и что черпали из бочки – во всех случаях меда в банке и дегтя в бочке будет одинаковое количество (от нуля до количества, равного объему ложки).

      Когда мы тащим ложку назад, та ее часть, которую занимает мед в точности равна части, которую прежде в ней занимал деготь.

  4. Miracle Miracle says:

    Когда мы тащим ложку назад, та ее часть, которую занимает мед в точности равна части, которую прежде в ней занимал деготь.

    Вот этого в условии нету и не понятно тогда, откуда вы это взяли, т.е. если это не береться из условной равномерности и нету в условии, тогда поясните откуда?

  5. Miracle Miracle says:

    Чего то не сразу сообразил – правда прикольно…
    Ехх старость не в радость:-))))

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

*


Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>