|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.09.2016, 15:57 | #1 |
Новичок
Джуниор
Регистрация: 21.09.2016
Сообщений: 1
|
Задача на комбинаторику
Резервное копирование документов выполняется путем создания архива с паролем. Известно, что пароль имеет длину ровно 4 символа и состоит из строчных букв английского алфавита (ASCII). От каждой неудачной попытки ввода пароля до следующей возможности ввести пароль проходит X миллисекунд, где X – сумма кодов таблицы ASCII, соответствующих символам введенного пароля, в миллисекундах (например, если введен неправильный пароль info, то X = «код символа i» + «код символа n» + «код символа f» + «код символа o»).
После сбоя в системе документы были утеряны. За какое минимальное время (в мс) гарантированно удастся восстановить утерянные документы из резервного архива, если пароль неизвестен? Варианты ответа: 200155488 1994512 245600374 1050434 Я рассчитал так: максимальный код символа(z) = 122 122*3 = 366 (т.к 3 символа неизвестны) код символа s = 115 366+115=481 - время обработки одного пароля. А всего паролей: ([количество вариантов]^3)*4 = (35^3) * 4 = 171500 171500*481 = 82491500. Ответ: 82491500. Но такого варианта ответа нет. Подскажите, в чём ошибка? |
21.09.2016, 16:27 | #2 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
во-первых, строчных букв английского алфавита всего 26 во-вторых, Цитата:
а вот с вычислением времени всё немного хуже. у вас аналитика написана неверно. при чём здесь, например, буква "s" ? допустим, проверяем пароль zzzz если он неверный, пауза будет 122+122+122+122 = 122 * 4 = 488 мс т.е. время подбора ГАРАНТИРОВАНО МЕНЬШЕ, чем 456976 * 488 мс => время меньше, чем 223004288 мс но чтобы подсчитать время точнее, нужно или написать простенькую программу, которая переберёт все варианты и сложит коды букв, либо выводить формулу аналитически. я бы, честно говоря, сделал по первому варианту. |
||
21.09.2016, 16:34 | #3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Код:
FYI. если Вы посмотрите на время разницы постов, то увидите, что время на запуск компилятора, написание программы, её запуск и получение результата составило примерно 7 минут. это намного дольше, чем я писал первый пост! |
|
21.09.2016, 16:35 | #4 | |||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
Цитата:
Цитата:
00 00 00 00 --время ожидания до следующего есть их СУММА =0 00 00 00 01 ... 25 25 25 25 =100 всего строк в записи 26**4. А каково же Общее время?? посчитаем по КАЖДОЙ колонке (0+1+..+25) * (26**3) и всего 4 * (26**3) * (0+25)*26/2 вместо 0..25 ставим нужные числа, рассчитываем, учитываем что последний пароль НЕ имеет следующего и время ожидания за ним нас не интересует.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 21.09.2016 в 16:40. |
|||
21.09.2016, 16:39 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
evg_m, хочу обратить ваше внимание на то, что постом выше есть решение.
правильный ответ: 200155488 |
21.09.2016, 16:54 | #6 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
тем паче это что это "набросок" Цитата:
программа — запись алгоритма на языке понятном транслятору
|
||
21.09.2016, 16:57 | #7 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
4*26^3*(97+122)*26/2 = 200155488
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 21.09.2016 в 17:00. |
|
21.09.2016, 17:38 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
(97+122)/2 - среднее время задержки
умножить на количество символов в пароле 4 и умножить на количество паролей 456976 ? получаем 109.5 мс * 4 * 456976 = 200155488 мс Аватар, браво! |
21.09.2016, 18:12 | #9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Вообще-то без среднего. но оно вытекает. 4 позиции на число комбинаций на других позициях и на вес (сумма арифметической прогрессии 97,98,...,122). Отсюда и среднее 2*(97+122): 4*26^3*(97+122)*26/2=4*26^4*(97+122)/2 -> среднее=2*(97+122). Но это еще догадаться нужно было, что оно такое. Изначально мне в голову не пришло
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 21.09.2016 в 18:16. |
17.10.2016, 19:50 | #10 | |
Новичок
Джуниор
Регистрация: 17.10.2016
Сообщений: 1
|
Проблемка)
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача на комбинаторику в Masm32 | ONELOONEY | Помощь студентам | 10 | 20.11.2015 12:07 |
Задача на комбинаторику в Masm32 | ONELOONEY | Помощь студентам | 1 | 19.11.2015 09:32 |
Задача на комбинаторику | programmm | Помощь студентам | 0 | 18.12.2011 02:42 |
C. Задача на комбинаторику | _zaq357 | Помощь студентам | 0 | 25.10.2011 22:17 |
Задача на комбинаторику | Rad-X | Помощь студентам | 1 | 13.02.2011 17:18 |