Боб решил запатентовать программно-аппаратный комплекс для блокировки своего мобильного телефона, который бы работал следующим образом. На сенсорном экране его телефона выводится квадратная решетка. Код блокировки формируется в результате “нажатия пальцем” в узлы этой решетки, так чтобы в результате был сформирован путь из верхнего-левого узла в правый-нижний. Из каждого узла решетки за один шаг можно попасть только в следующий узел справа или ниже. Например, для решетки размера 4 x 4 на рисунке указан один из правильных путей построения кода: pixshock.net/pic_b/7a1050da11c35c25f90098013cb95727.gif Подумайте, сколько существует кодов блокировки (различных путей от верхнего левого угла решетки до правого нижнего угла) для квадратной решетки размера 1 х 1, 2 х 2, 3 х 3, 4 х 4 и т.д.? И помогите Бобу определить значение N – минимальный размер решетки N x N, который допускал бы не меньше 1 000 000 различных кодов блокировки его телефона. Значение N и будет ответом к задаче

Вопрос от посетителя

Боб решил запатентовать программно-аппаратный комплекс для блокировки своего мобильного телефона, который бы работал следующим образом. На сенсорном экране его телефона выводится квадратная решетка. Код блокировки формируется в результате “нажатия пальцем” в узлы этой решетки, так чтобы в результате был сформирован путь из верхнего-левого узла в правый-нижний. Из каждого узла решетки за один шаг можно попасть только в следующий узел справа или ниже. Например, для решетки размера 4 x 4 на рисунке указан один из правильных путей построения кода: pixshock.net/pic_b/7a1050da11c35c25f90098013cb95727.gif Подумайте, сколько существует кодов блокировки (различных путей от верхнего левого угла решетки до правого нижнего угла) для квадратной решетки размера 1 х 1, 2 х 2, 3 х 3, 4 х 4 и т.д.? И помогите Бобу определить значение N – минимальный размер решетки N x N, который допускал бы не меньше 1 000 000 различных кодов блокировки его телефона. Значение N и будет ответом к задаче

Отвечает Илюха:

Я подумал… Хорошенько подумал 🙂 И вот до чего я додумался… Постараюсь изложить лаконично:

 

В квадрате (или решетке) NxN имеется N строк и N колонок. Предположим, что мы кодируем ход вправо как единицу “1”, а ход вниз – как ноль “0”. Любой допустимый путь из левого верхнего угла квадрата (т.е. решетки) в нижний состоит из N переходов вправо и N переходов вниз. Тогда каждому допустимому пути будет соответствовать двоичная последовательность длины 2*N, в которой обязательно будут присутствовать N единичек “1” и N нулей “0”. Остается только определить, сколько таких последовательностей можно построить для квадрата NxN.

 

Попытаемся, к примеру, расставить только N единичек “1” на соответствующие позиции в последовательности из 2*N символов. Оставшиеся места мы автоматически заполним нулями “0”. Первую “1” можно поставить на любую из 2*N позиций, вторую – на любую из оставшихся 2*N – 1 позиций и т.д. Количество таких размещений, как известно, будет (2*N)*(2*N – 1)*(2*N – 2)*…*(2*N – (N – 1)) = C(n=2*N, k=N) = (2*N)!/(N!*(2*N – N)!), где C(n, k) означает количество размещений из n по k.

 

Итак, количество путей в квадрате NxN определяется по формуле P(N) = C(2*N, N) = (2*N)!/(N!*(2*N – N)!) = (2*N)!/(N!*N!) = (2*N)!/((N!)^2) (*)

 

Подставляя в формулу последовательно значения N = 1, 2, 3 и 4, находим количество путей для квадратов 1×1, 2×2, 3×3 и 4×4: P(1) = 2, P(2) = 6, P(3) = 20 и P(4) = 70.

 

По условию нам нужно также найти такое минимальное N, при котором P(N) > 1000000 = 10^6.

 

Найдем его при помощи вычисления на компьютере (альтернативно можно использовать формулы для приближенного вычисления факториала):

 

P(N) = (2*N)!/((N!)^2) > 1000000 = 10^6

 

Вычислением нескольких последовательных значений P(N) мы убеждаемся, что P(N=11) = 705432 < 1000000 < P(N=12) = 2704156. Следовательно, Бобу нужно взять квадрат (или решетку) размером 12x12.

 

Ответ: N = 12

 

P.S.: Патент, на мой взгляд, довольно несуразный, хотя чем бы Боб не тешился… 🙂 Удачи тебе, Боб! 🙂

Добавить свой ответ