Архив рубрики: Математика

Долевое участие – Этот безумный, безумный мир

Недавно пересматривали старинную классику “Этот безумный, безумный, безумный мир“, золотой фонд кинокомедии этого нашего с вами человечества. Отличный фильмец, но здесь не про него конкретно, а про одну интересную задачку, которую пытались решить герои-бедолаги:

Если вдруг кто запамятовал или не смотрел, суть такова – некоторая группа людей, движущаяся автомобильной колонной стала свидетелем смерти одного жулика, который вылетел с дороги в пропасть. Женщины остались у обочины, мужчины спустились и успели узнать о “тайне” этого несчастного – о кладе (350 000$), зарытом под большой “дабл ю“.

Интересным для меня стал вопрос делёжки. Но для этого надо понимать как они ехали, итак было четыре машины: первая с молодожёнами (2 человека=1 семья), вторая с взбалмошной семейкой (3 человека=1 семья), третья с друзьями (2 человека=не семья) и последняя грузовик с одним водителем (1 человек=не семья).

Были предложены следующие варианты деления денег:

1.Делить на 4 машины” – устраивало все семьи и тех, кто ехал в одиночестве; не устраивало двух друзей по причине: “вы получите по 87.500, а мы эту сумму должны будем разделить между собой“;

2. “Делить на кол-во людей” – не устроило одинокого водителя грузовика, потому что любая семья получит по 2-3 части, а он всего одну;

3. “Делить на кол-во людей, спустившихся вниз и узнавших тайну” – не устроило женщин, которые не спускались, но хотели также иметь свою долю;

В данной ситуации выгоднее всего было бы паре молодожёнов, т.к. в любом из предложенных вариантов – они бы получили максимально возможную и выгодную прибыль для себя, чего нельзя сказать за водителя грузовика и двух друзей.

Собственно, в ходе горячих споров был предложен красивый, тонкий и невероятно простой способ сделать всё грамотно и справедливо. Один из участников предложил сделать следующее: посчитать общее количество людей (8 человек), количество людей, которые спустились (5 человек), количество машин (4 машины) и количество людей в каждой из машин. Получилось итого в сумме: 8+5+4+8 =25 долей. Т.е. “вес” одной доли составляет 350 000 / 25 =  14 000$.

Что выходит для каждого участника: молодожёны получают 2 доли за себя, долю за машину, долю за то, что мужчина спускался вниз и ещё по 2 доли за каждого человека в машине = 6 долей = 84 000$. Большая семья получит 3 + 1 за машину + 1 за спуск в пропасть + 3 за каждого человека в машине = 8 долей = 112 000$. Два друга получат: 2 + 1 за машину + 2 за спуск (оба спустились) + 2 = 7 долей = 98 000. И водитель получит: 1 + 1 + 1 + 1 = 4 доли (56 000$).

Очень красивый и очень простой метод. Я просто не мог прям вот про него не написать здесь :) Конечно, данный вариант всё равно никого не устроил и жадность каждого взяла верх, но.. это уже не очень и важно. Иначе комедии бы и не получилось вовсе. На то она и комедия.

Математика и Лего

Как объяснить человеку дроби, который очень далёк от математики? Или любопытному ребёнку? Правильно, только при помощи LEGO :) Сложное – в простом.

LEGO дроби

LEGO дроби 1

LEGO дроби

LEGO дроби 2

LEGO квадрат

LEGO квадрат

Pi и NASA

Интересная статья на гиктаймс – школьник спрашивает какая точность числа Пи используется в рассчётах NASA (JPL – лаборатория реактивного движения). Оказывается, что во всех расчётах константой принято считать число 3,141592653589793 (15 знаков после запятой). К примеру, в .NET константа PI имеет 16 знаков точности, что кагбэ намекает (простите, вставил в существующий проект – там метод Loading лениво было удалять):

.NET C#

.NET C#

Оказывается, что 15-знаковой точности хватает с лихвой. Официальный ответ Марка Реймена примерно звучит следующий образом: расстояние от нас до “крайнего” космического объекта искусственного происхождения (Вояджера-1, т.е.) – около 20 млрд. километров. Соответственно 40 млрд. километров диаметр окружности. По формуле 2PiR получаем окружность равную чуть более, чем 125 млрд. километров. И вот погрешность в вычислениях при таком выбранном числе Пи – является 4 сантиметра.

Вдумайтесь.

~125 000 000 000 километров = ~1,25e+16 сантиметров = ~4 сантиметра погрешности.

Осталось понять зачем в .NET Framework 16 знаковая точность. Но впрочем это уже совсем другая история (с)

Число 1089

Любое трёхзначное число, записанное в порядке уменьшения (921, 874, 653 etc.), к примеру возьмём: 953. Отнимаем от него 359 (число, записанное в обратном порядке от нашего выбранного), получаем: 594. К этому число добавляем его же, но опять-таки в обратном порядке, т.е. 495. Итого получится 1089. Всегда и с любыми числами будет 1089.

Задачи школьные, а я, наверное, пару дней на анализ всего этого потратил (конечно, в пассивном режиме). Самое интересное здесь для меня не сам факт – итогового 1089. А то, что первая операция (вычитание обратного себе числа) – всегда даёт число, которое кратное 9 (которое и без того “волшебное” число в математике). Собственно, 1089 также кратно 9 (и как выяснилось позже и 99).Итого, формула выглядит так: 99 * (A – C), где A первая цифра числа и C – последняя. Результатом такого исчисления будет всегда число кратное 99: т.е. 99 (считать, как трёхзначное 099), 198, 297, 396, 495, 594, 693, 792, 891, 990. Сумма обратного полученного числа к его обратному – всегда будет давать 1089.

Билл Гейтс знает как избежать глобальное потепление

Конечно, нет. Не знает до конца и полностью. Никто не знает, т.к. здесь кроме очевидных знаний задействованы хаос, турбулентность и много ещё чего прочего, бесконтрольного. Но порывы и подходы главы Microsoft очень мне по душе приходятся. Молодец он, человечище. Суть такова – Гейтс вывел простую, очень абстрактную формулу, которая теоретически может помочь избежать глобального потепления. Как следствие – предотвратить участь, скажем, Венеры.

P * S * E * C = CO2

Где Р это население Земли (people); S – услуги, используемые людьми (services); E – энергия, затрачиваемая на поддержание и организацию этих услуг (energy); С – количество углекислого газа, полученного при создании данной энергии. Произведение данных коэффициентов дадут приблизительное значение тех выбросов, которые на данный момент производят обитатели нашей бедной планеты. Это миллионы и миллионы тонн в год.

С учётом увеличивающегося количества людей и, соответственно, услуг – ничего хорошего не сулит и ничем хорошим это не закончится. Положительная обратная связь (если очень коротко: ледники тают, площадь белого уменьшается, поглощение света увеличивается – тают ещё больше ледников и т.д.) уже имеет место быть, уже доказана и выводов как-то особо КТО НУЖНО не сделали.

Ещё век-два и мы все вместе весело зайдём в мавзолей нового масштабного вымирания, чтобы через N миллионов лет умные динозавры изучали наши ископаемые.

Подобного рода формулы, конечно, не точны и охватывают по самым хорошим прогнозам что-то около 80% проблемы, по идее – основную её, самую важную часть. Это не аксиоматика, это только примерный эскиз. Но именно с таких простых штуковин начинаются великие дела. Подписался на канал, послежу.

Задачка для школьников

Давеча один мой хороший друг решил меня “подколоть” и предложил решить детскую задачку, которую по его словам дают детям дошкольного возраста. Согласно легенде, решить подобную заморочку могут 95% детей в возрасте до 10 лет и только четверть процента людей после 20 лет. Знал чем меня подкупить :) В общем, взялся за решение этой головоломки… Да, кстати, вот и она:
8809 = 6	7111 = 0
2172 = 0	6666 = 4
1111 = 0	3213 = 0
7662 = 2	9312 = 1
0000 = 4	2222 = 0
3333 = 0	5555 = 0
8193 = 3	8096 = 5
7777 = 0	9999 = 4
7756 = 1	6855 = 3
9881 = 5	5531 = 0

Вопрос: 2581 = ?

Конечно же, интереснее всего решать подобные вещи самому. И ни в коем случае не читать текст далее :)

После того, как я сказал, что собираюсь решать задачу логически – меня засмеяли. Ну что ж – это меня поддевает :) Я честно минут 20 просто втыкал во все эти цифры, как самый простой ребенок. Даже в носу ковырялся :) Но мысли не шли – связь установить не получилось. Но сдаваться я не думал – ходил с распечатанным листиком… Много писал всяких формул, но постоянно что-то где-то вылезало и никак не хотело сходиться.

Через час я уже было думал плюнуть и идти клянчить ответ, но как-то случайно для себя заметил странную связь в цифрах. В общем, насмелился я решить эту головоломку использую все свои знания по криптоанализу и общей логики. Благо дело данные дисциплины были всунуту мою головешку в родном университете :)

Итак, что я заметил. Некоторые числа с левой стороны (те, что 4-х значные) в своей структуре имеют одинаковые числа. Это меня в первуб очередь и смутило. Взяв листочек я выписал и отсортировал ряд:

0000 = 4	1111 = 0
2222 = 0	3333 = 0
5555 = 0	6666 = 4
7777 = 0	9999 = 4

Странная зависимость наблюдается: 0000, 6666 и 9999 равны 4, а 1111, 2222, 3333 и 7777 = 0… Практически, я шел наугад, т.к. в принципе числа могли быть случайными и никакой гарантии в правильности моего изложения не было. Но все-же смущало… почему ноль и почему 4… И почему нет 4444 и 8888.

Возьмем 0000=4. Предположим, что 4 нуля = 4. Т.е. получается банальная сумма: 1 ноль = единице. Точно такая же ситуация наблюдается с 9999 и 6666, которые тоже подходят под это выведенное правило. Итого, мы получили вес трех цифр 0, 6 и 9 равный единице. Выберем все ряды, где встречаются эти цифры:

8809 = 6	6666 = 4
7662 = 2	9312 = 1
0000 = 4	8193 = 3
8096 = 5	9999 = 4
7756 = 1	6855 = 3
9881 = 5

И, соответственно, ряд, где они не встречаются:

7111 = 0	2172 = 0
1111 = 0	3213 = 0
2222 = 0	3333 = 0
5555 = 0	7777 = 0

Исходя из этой логики, мы можем сделать вывод, что 1, 2, 3, 5, 7 – по весу равны нулю и все комбинации из этих чисел можно отложить в сторону. Таковым образом мы убиваем почти половину ряда. Не ясная ситуация остается с 4 и 8… Т.к. изначально у нас не было заданы элементы ряда 4444 и 8888. Это единственные неизвестные, которые нам надо будет угадать, а пока очистим наш ряд от всех не нужных комбинаций. Итак:

8809 = 6 		/* встречается 8... откладываем пока */
6855 = 3 		/* встречается 8... откладываем пока */
9881 = 5 		/* встречается 8... откладываем пока */
8193 = 3 		/* встречается 8... откладываем пока */
8096 = 5 		/* встречается 8... откладываем пока */
6666 = 4 		/* четыре шестерки; шестерка = 1; 1+1+1+1=4 */
7662 = 2 		/* семерка=0; две шестерки = 1+1; двойка =0 */
9312 = 1 		/* девятка=1, все остальные = 0 */
9999 = 4 		/* четыре девятки; девятка= 1; 1+1+1+1=4 */
7756 = 1 		/* две семерки=0; пятерка=0; шестерка=1 */

Итого, пока у нас все сходится. Кстати, знать значения числа 4 нам не понадобится, т.к. комбинации с этим числом не встречаются, другими словами “баба – с воза, кобыле легче” :) Основная загвоздка у нас с числом 8, построим ряд, в котором фигурирует это число:

8809 = 6
9881 = 5
8096 = 5
6855 = 3
8193 = 3

Теперь давайте уберем лишние цифры, которые не имеют веса (1, 2, 3, 4, 5, 7), получим:

8809 = 6 (без изменений)
988 = 5 (убрали единицу)
8096 = 5 (без изменений)
68 = 3 (убрали две пятерки)
89 = 3 (убрали единицу и тройку)

Ну теперь я думаю всем ясно :) Подставим вместо 8 = x и решим примитивную систему уравнений:

{
   x+x+0+9 = 6;
   9+x+x = 5;
   x+0+9+6 = 5;
   6+x = 3;
   x+9 = 3;
}

Итого, получаем вес восьмерки = 2.

Перепроверка всех комбинаций ряда прошла удачно и мы можем вынести вердикт:

Числа, которые имеют вес: 0 = 1; 6 = 1; 8 = 2; 9 = 1;
Числа, которыми можно пренебречь: 1, 2, 3, 4, 5, 7;

И наконец, ответ на вопрос 2581 = 2, т.к. 2, 5, 1 = 0, а в 8 = 2.

Отправил ответ другу. Друг сказал, что ответ правильный и не поверил, что я задачу “решил”, а не спер в интернете :) Теперь внимание (!!!)… ответ… оказывается дети должны были считать кружочки в цифрах! Вот почему нужно было думать, как ребенок, а не искать математическую зависимость между этими цифрами. Но суть не в этом. Суть в том, что я решил такую “в принципе, логически не решаемую” задачу методом криптоанализа. Я установил все зависимости и ответ мой верный… просто разница лишь в терминологии – я считал, что у 8 = вес равный двум (т.к. об этом мне поведали все нехитрые операции выше), а ребенок посчитал “кружочки” и тоже пришел к двум :)

Вот так…

Когда я показал другу листочек с абсолютно логическим и, главное, правильным решением – вы бы видели его то круглые, то квадратные глаза. Он итак меня считали немного повернутым (хожу лохматый, бубню что-то под нос… программист), теперь видимо уже совсем убедился в этом :)

Из всего вышесказанного можно сделать вывод, что та четверть процента людей старше 20 лет, которые способны решить “детскую” головоломку “по-взрослому” (т.е. логически объясняя) – могут стать неплохими программистами :)