Это довольно известная в узких кругах задача про совещания и рукопожатия на них. Её можно решить с помощью "треугольных" чисел, о которых знают математики, а можно за 2 минуты написать программу на коленке и компьютер всё быстренько посчитает, пока вы будете пить кофе. Я покажу и тот и другой способ, но вы для начала попробуйте решить сами.
Сергей Иванович организовал совещание акционеров в конференц-зале пятизвездочной гостиницы. Акционеры заходили в зал по одному и каждый заходящий здоровался за руку со всеми, кто уже был в зале. Известно, что всего было 120 рукопожатий. Сколько людей было на совещании?
Как решил бы математик
Первым в зал пришел Сергей Иванович. Он был один, поэтому ни с кем не здоровался. Потом зашел кто-то ещё и они поздоровались. Затем пришел третий акционер и поздоровался с Сергеем Ивановичем и другим акционером — это два рукопожатия. Да плюс одно рукопожатие, которое уже было — три.
Затем зашел четвертый человек, поздоровался с тремя уже присутствующими — три рукопожатия. Да плюс три рукопожатия, которые были до этого — итого шесть.
Когда зашел пятый, он поздоровался с каждым из четырех — 4 рукопожатия. Да плюс 6 рукопожатий, которые были до этого, в сумме дают 10 рукопожатий.
И так далее. Мы можем считать таким образом рукопожатия до тех пор. пока не достигнем 120. Но это долго и скучно (пусть так считает компьютер), а я общеал красивое математическое решение с "треугольными числами".
Давайте изобразим рукопожатия в виде точек.
Как видите, точки можно расставить в виде правильных треугольников. Именно поэтому числа 1, 3, 6, 10, 15 и так далее называются "треугольными". Я сейчас не буду вдаваться в подробности и то, как выводится формула "треугольных" чисел, но её можно записать так: n²+n=2T, где n — это номер шага, а Т — количество точек в треугольнике.
В нашем случае Т — это количество рукопожатий, а n=(количество человек-1), потому что на первом шаге у нас одна точка (одно рукопожатие), а это соответствует двум людям, на втором шаге три рукопожатия, которые соответствуют трем людям в комнате и так далее.
По условию задачи Т=120. Подставляем и считаем: n²+n-240=0; D=1+960=961=31². Получаем корни n=15 или n=-16. Отрицательный вариант нам по понятным причинам не подходит, так как не может быть отрицательное количество человек в комнате. Значит, n=15. Осталось вспомнить, что n=(количество человек-1), следовательно количество человек в комнате равно (n+1)=15+1=16. Всё, задача решена.
Как бы решал программист
Теперь давайте посмотрим, как эту же задачку решил бы программист. Он бы не стал заморачиваться, что-то считать и рассуждать, потому что гораздо проще и быстрее написать 5-10 строк кода и сделать один цикл, в котором компьютер за доли секунды найдет верный ответ. Код в зависимости от языка программирования будет выглядеть по-разному, поэтому я нарисую алгоритм, а вы можете написать программу.
Первым делом объявляем переменные. Начнем с момента, когда в комнате находится только Сергей Иванович и он ещё ни с кем не здоровался за руку. То есть Л (количество людей в комнате) = 1, а Р (количество рукопожатий) = 0.
Затем идёт проверка условия, что Р<120. Понятно, что на первом шаге у нас Р=0 и мы идем по стрелке "Да". Теперь увеличиваем переменную Л на единицу (Л=Л+1), а число рукопожатий увеличиваем на (Л-1). В конце первого шага Л=2; Р=0+(2-1)=1, то есть два человека в комнате и одно рукопожатие. Дальше снова проверяем условие того, что Р<120.
Так как Р=1, снова идём по стрелке "Да" и вновь увеличиваем переменную Л на единицу, а число рукопожатий на (Л-1). В конце второго шага получаем Л=2+1=3, а Р=1+(3-1)=1+2=3. Снова проверяем условие Р<120 и снова идем по стрелке "Да".
В конце третьего шага получаем: Л=3+1=4; Р=3+(4-1)=3+3=6.
В конце четвертого шага: Л=4+1=5; Р=6+(5-1)=6+4=10.
Как видим, наш алгоритм работает, всё совпадает с математическим решением, поэтому оставляем вычисления на совести компьютера и после последней проверки в алгоритме, когда Р=120, идем по стрелке "Нет" и выводим результат: Л=16.
Какой способ решения вам ближе? Как бы вы решили задачу? Не забываем, что помимо этого блога у меня есть каналы на Ютубе, в Инстаграме и ТикТоке.
Ещё интересно: Какие 4 банки выбрать, чтобы ими можно было отмерить целое количество литров от 1 до 40
Головоломка из соцсетей про альпиниста, которую решили только 3 из 94. Математика тут не поможет
Не игра в кальмара, конечно, но тоже сложная южнокорейская головоломка