| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Вычисление количества возможных вариантов ключа |
| Автор: Беспечный 6.7.2011, 12:10 |
| Есть некий алгоритм генерации лицензионного ключа, состоящего из символьных блоков и содержащего некие случайные символы из заданного набора. Параметры генерации следующие: 1) количество блоков 2) размер блока 3) символ разделителя блоков (всегда присутствует) 4) набор символов, представляющий собой список флагов: upper case ("ABCD..."), lower case ("abcd..."), digits ("1234..."), symbols ("!@#$%*[];?()") 5) позиция статического блока 6) содержимое статического блока В пределах одного блока символы не повторяются. Для примера зададим следующие параметры: 1) 5 2) 4 3) "-" 4) upper case + digits 5) 1 6) "TEST" С этими параметрами генератор выдаст ключ, к примеру, такой: TEST-4D3G-PE8M-WDMO-IEU7 Этот алгоритм реализован, теперь нужен другой алгоритм, высчитывающий количество всех возможных вариантов лицензионных ключей при определенных параметрах. В комбинаторике не силен, поэтому требуется помощь |
| Автор: Akina 6.7.2011, 12:29 |
| Вычти из количества блоков количество статических блоков? получи количество генерируемых блоков K. Посчитай длину словаря L. Пусть размер блока M. Тогда вариантов блока L! / (M! * (L-M)!) = Z Вариантов ключа - Z в степени K. |
| Автор: Беспечный 6.7.2011, 13:16 |
| Если К - количество блоков без учета статического, а статический блок (если он задан) может быть только один, то сколько вариантов будет с учетом статического блока? |
| Автор: Беспечный 6.7.2011, 14:20 |
| Реализовал подсчет - для проверки задаю такие параметры: кол-во блоков - 1, размер блока - 2, набор символов - только цифры. Нетрудно в уме посчитать, что при таком раскладе алгоритм должен выдавать 81 вариант: 90 двухсимвольных вариантов (от 10 до 99) за вычетом 9-ти повторяющихся (11, 22, 33, etc). Однако, формула возвращает мне значение 45... Похоже, здесь не берутся в расчет такие значения, как например 21 и 12. А мне они нужны. |