Предмет: Информатика,
автор: vladamorozihina
Задача 15. Пароль для мистера Фокса Мистер Фокс придумывает себе пароль. Он хочет, чтобы он состоял из заглавных латинских букв и был достаточно случайным, поэтому для его создания придумал такой алгоритм. Сначала он пишет на доске первую букву латинского алфавита: A, затем стирает ее и пишет такое “слово”: BAA (сначала вторая буква латинского алфавита, потом два раза приписывает то, что стер с доски перед этим). Затем он снова все стирает. На третьем шаге мистер Фокс пишет третью букву алфавита, а потом дважды повторяет то, что стер перед этим (получилась строка CBAABAA) и так далее. Написав девятое слово, он останавливается и генерирует пароль: пароль состоит из записанных подряд букв девятой строки, стоящих на первом, 511, 6, 258 и 68 местах. Какой пароль получился у мистера Фокса? Комментарий. Если бы в девятой строке на первом, 511, 6, 258 и 68 местах стояли бы буквы A, B, C, D и E, то в качестве ответа нужно было бы вывести строку ABCDE.
Ответы
Автор ответа:
2
Довольно просто найти ответ, используя таблицу в Excel (см.файл).
В первом столбце таблицы ставим номер шага- от состояния до начала (нулевой шаг), до девятого шага.
В следующем столбце будем составлять слово для каждого шага.
Для нулевого шага оставляем пустую ячейку.
Для первого шага пишем такую формулу:
=СИМВОЛ(B4+64)&C3&C3
Эта формула составляет одну текстовую строку из трёх текстовых строк (символ "&" как раз выполняет соединение строк).
здесь B4 -адрес ячейки, находящейся слева от текущей (в ней содержится номер текущего шага).
Для первого шага, к номеру шага (1) прибавляется число 64 (получили 65), затем функция СИМВОЛ возвращает нам первую букву латинского алфавита (её код=65).
Для каждого следующего шага получаемый код будет увеличиваться на единицу, и функция будет возвращать по порядку следующие буквы алфавита (они идут по порядку, с кодами 65 - 90).
C3 -адрес ячейки, находящейся сверху от текущей (в ней содержится строка, полученная на предыдущем шаге).
Для первого шага берётся строка с нулевого шага (из пустой ячейки, то есть пустая строка).
Эта взятая строка дважды добавляется к предыдущему тексту (к букве алфавита).
Для каждого следующего шага, к букве будет дважды добавляться текстовая строка, полученная на предыдущем шаге.
Эту формулу надо скопировать во все ячейки столбца, с первого до девятого шага.
Затем, под этой таблицей, в любой ячейке ставим формулу, составляющую текстовую строку пароля:
=ПСТР(C12;1;1)&ПСТР(C12;511;1)&ПСТР(C12;6;1)&ПСТР(C12;258;1)&ПСТР(C12;68;1)
Здесь C12 -адрес ячейки, в которой содержится текстовая строка, полученная на последнем, девятом шаге.
Формула состоит из пяти функций ПСТР, каждая из них возвращает по одной букве пароля, затем буквы составляются в одну текстовую строку пароля, сцепляясь с помощью символа "&".
Для функции ПСТР в скобках указаны через точку с запятой её аргументы: текстовая строка (у нас стоит ссылка на строку в ячейке C12); позиция извлекаемой буквы в строке (по задаче, используются пять позиций: 1, 511, 6, 258 и 68); количество извлекаемых букв (одна).
В итоге, мы получаем текстовую строку пароля:
IADGE (первой идёт большая буква i)
Также, я добавил третий столбец, где показывается длина текстовой строки, полученной на каждом шаге. Этот столбец не обязательный, я добавил просто для сведения.
Если эксель у вас не установлен, можно использовать его онлайн-версию (там нужно войти с учётной записью майкрософт), либо использовать бесплатные аналоги (например из OpenOffice). Есть и бесплатные онлайн аналоги экселя.
Но, в аналогах скорее чаще всего функции уже другие (в OpenOffice, например, вместо СИМВОЛ используется CHAR, а вместо ПСТР используется MID.
В первом столбце таблицы ставим номер шага- от состояния до начала (нулевой шаг), до девятого шага.
В следующем столбце будем составлять слово для каждого шага.
Для нулевого шага оставляем пустую ячейку.
Для первого шага пишем такую формулу:
=СИМВОЛ(B4+64)&C3&C3
Эта формула составляет одну текстовую строку из трёх текстовых строк (символ "&" как раз выполняет соединение строк).
здесь B4 -адрес ячейки, находящейся слева от текущей (в ней содержится номер текущего шага).
Для первого шага, к номеру шага (1) прибавляется число 64 (получили 65), затем функция СИМВОЛ возвращает нам первую букву латинского алфавита (её код=65).
Для каждого следующего шага получаемый код будет увеличиваться на единицу, и функция будет возвращать по порядку следующие буквы алфавита (они идут по порядку, с кодами 65 - 90).
C3 -адрес ячейки, находящейся сверху от текущей (в ней содержится строка, полученная на предыдущем шаге).
Для первого шага берётся строка с нулевого шага (из пустой ячейки, то есть пустая строка).
Эта взятая строка дважды добавляется к предыдущему тексту (к букве алфавита).
Для каждого следующего шага, к букве будет дважды добавляться текстовая строка, полученная на предыдущем шаге.
Эту формулу надо скопировать во все ячейки столбца, с первого до девятого шага.
Затем, под этой таблицей, в любой ячейке ставим формулу, составляющую текстовую строку пароля:
=ПСТР(C12;1;1)&ПСТР(C12;511;1)&ПСТР(C12;6;1)&ПСТР(C12;258;1)&ПСТР(C12;68;1)
Здесь C12 -адрес ячейки, в которой содержится текстовая строка, полученная на последнем, девятом шаге.
Формула состоит из пяти функций ПСТР, каждая из них возвращает по одной букве пароля, затем буквы составляются в одну текстовую строку пароля, сцепляясь с помощью символа "&".
Для функции ПСТР в скобках указаны через точку с запятой её аргументы: текстовая строка (у нас стоит ссылка на строку в ячейке C12); позиция извлекаемой буквы в строке (по задаче, используются пять позиций: 1, 511, 6, 258 и 68); количество извлекаемых букв (одна).
В итоге, мы получаем текстовую строку пароля:
IADGE (первой идёт большая буква i)
Также, я добавил третий столбец, где показывается длина текстовой строки, полученной на каждом шаге. Этот столбец не обязательный, я добавил просто для сведения.
Если эксель у вас не установлен, можно использовать его онлайн-версию (там нужно войти с учётной записью майкрософт), либо использовать бесплатные аналоги (например из OpenOffice). Есть и бесплатные онлайн аналоги экселя.
Но, в аналогах скорее чаще всего функции уже другие (в OpenOffice, например, вместо СИМВОЛ используется CHAR, а вместо ПСТР используется MID.
Приложения:
Аноним:
А если вместо 511 и 6 стоят 510 и 5 соответственно?
Похожие вопросы
Предмет: Математика,
автор: Аноним
Предмет: Литература,
автор: rezniksashawolf
Предмет: Математика,
автор: TaTi192
Предмет: Химия,
автор: alexey1223
Предмет: Математика,
автор: ahmedsabina2014