Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2016, 15:57   #1
vrtnev
Новичок
Джуниор
 
Регистрация: 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.
Но такого варианта ответа нет. Подскажите, в чём ошибка?
vrtnev вне форума Ответить с цитированием
Старый 21.09.2016, 16:27   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А всего паролей: ([количество вариантов]^3)*4 = (35^3) * 4 = 171500
это неверно.

во-первых, строчных букв английского алфавита всего 26

во-вторых,
Цитата:
Число всевозможных размещений с повторениями из n элементов по k равно
n в степени k
поэтому 26^4 = 456976

а вот с вычислением времени всё немного хуже.
у вас аналитика написана неверно. при чём здесь, например, буква "s" ?
допустим, проверяем пароль zzzz
если он неверный, пауза будет 122+122+122+122 = 122 * 4 = 488 мс
т.е. время подбора ГАРАНТИРОВАНО МЕНЬШЕ, чем
456976 * 488 мс => время меньше, чем 223004288 мс

но чтобы подсчитать время точнее, нужно или написать простенькую программу, которая переберёт все варианты и сложит коды букв,
либо выводить формулу аналитически.

я бы, честно говоря, сделал по первому варианту.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.09.2016, 16:34   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Всего вариантов паролей: 456976 задержка в ms = 200155488

Код:
var ms : int64;
  a,b,c,d : byte;
  cnt:integer;
begin
  ms:=0;
  cnt:=0;
  for a := $61 to $7a do
    for b := $61 to $7a do
     for c := $61 to $7a do
       for d := $61 to $7a do begin
         ms := ms + a + b + c + d;
         inc(cnt)
       end;
  WriteLn('Всего вариантов паролей: ',cnt,' задержка в ms = ',ms);
  ReadLn
end.

FYI. если Вы посмотрите на время разницы постов, то увидите, что время на запуск компилятора, написание программы, её запуск и получение результата составило примерно 7 минут.
это намного дольше, чем я писал первый пост!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.09.2016, 16:35   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
(т.к 3 символа неизвестны)
откуда информация про три..
Цитата:
366+115=481 - время обработки одного пароля.
время ожидания величина ПЕРЕМЕННАЯ
Цитата:
до следующей возможности ввести пароль проходит X миллисекунд, где X – сумма кодов таблицы ASCII
сначала будем считать что задержки будут от 0 до 25

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.
evg_m вне форума Ответить с цитированием
Старый 21.09.2016, 16:39   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

evg_m, хочу обратить ваше внимание на то, что постом выше есть решение.
правильный ответ: 200155488
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.09.2016, 16:54   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
evg_m, хочу обратить ваше внимание на то, что постом выше есть решение.
когда начинал ответов еще не было.
тем паче это что это "набросок"
Цитата:
либо выводить формулу аналитически.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 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
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

(97+122)/2 - среднее время задержки
умножить на количество символов в пароле 4 и умножить на количество паролей 456976 ?
получаем
109.5 мс * 4 * 456976 = 200155488 мс

Аватар, браво!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 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
kik777
Новичок
Джуниор
 
Регистрация: 17.10.2016
Сообщений: 1
По умолчанию Проблемка)

Цитата:
Сообщение от Аватар Посмотреть сообщение
Вообще-то без среднего. но оно вытекает. 4 позиции на число комбинаций на других позициях и на вес (сумма арифметической прогрессии 97,98,...,122). Отсюда и среднее 2*(97+122): 4*26^3*(97+122)*26/2=4*26^4*(97+122)/2 -> среднее=2*(97+122). Но это еще догадаться нужно было, что оно такое. Изначально мне в голову не пришло
Откуда 97 взялось? По подробнее, пожалуйста
kik777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на комбинаторику в 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