Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > [Delphi] задачка по шифровке! |
Автор: Venom88 4.5.2008, 21:41 |
помогите решить..... Двузначные номера. Каждую букву исходного сообщения заменили её порядковым двузначным номером в русском алфавите согласно таблице: а б в г д е ё ж з и й 01 02 03 04 05 06 07 08 09 10 11 к л м н о п р с т у ф 12 13 14 15 16 17 18 19 20 21 22 х ч ц ш щ ъ ы ь э ю я 23 24 25 26 27 28 29 30 31 32 33 Полученную цифровую последовательность разбили (справа налево) на трехзн. Цифровые группы без пересечений и пропусков. Затем каждое из полученных трехзначных чисел умножили на 77 и оставили только три последние цифры произведения. В результате получилось последовательность цифр: 317564404970017677550547850355. |
Автор: Venom88 4.5.2008, 22:40 |
надо расшифровать и зашифровать.....я вроде это написал, присвоил каждой букве алфавита ее порядковый номер!! но вроде получилась одна фигня....может кто поможет решить(объеснить) эту задачку.... |
Автор: mmvds 4.5.2008, 22:49 |
1) Разбиваем исходную последовательность на трехзначные числа 2) Для каждого из них перебором находим такие две первых цифры (от 00 до 99) чтоб полученное число делилось без остатка на 77 3) Делим полученные числа на 77 4) Приводим частные к трехзначной длинне и соединяем в одну последовательность 5) Разбиваем полученную последовательность по две цифры 6) Подставляем согласно алфавиту каждому номеру буквы Начни делать, потом скажешь на каком этапе помочь. |
Автор: Beltar 5.5.2008, 09:03 | ||
Зачем? Составить просто таблицу последних трех цифр x*77 для всех 100<=x<=999 и по ней искать все. |
Автор: Beltar 5.5.2008, 11:55 | ||||||
Т. е. от 001 до 999 даже. Я предлагаю посчитать
Погодите. Для меня пока вопрос стоит не в скорости, а в том, что вы хотите получить. Я не понимаю предложенный алгоритм.
Какие 2 цифры? Какое число? Ну допустим я взял слово "ас", последовательность "0119" Берем группы по 3 цифры "011", "900" Что дальше с ними делать? |
Автор: mmvds 5.5.2008, 15:13 | ||||
Внимательнее читайте условие:
Шифрование: для данного примера "ас" "0119" разбиваем по 3 цифры будет "000" "119" т.к. разбиваем СПРАВА налево, далее нам нужно умножить эти числа на 77, оставляем 3 последних цифры "000" "163", получим нужную последовательность 000163 Расшифровка по моему алгоритму: последовательность: 000163 1) Разбиваем исходную последовательность на трехзначные числа 000 163 2) Для каждого из них перебором находим такие две первых цифры (от 00 до 99) чтоб полученное число делилось без остатка на 77 00 000 mod 77=0 09 163 mod 77=0 3) Делим полученные числа на 77 000 119 4) Приводим частные к трехзначной длинне и соединяем в одну последовательность 000119 5) Разбиваем полученную последовательность по две цифры 00 01 19 6) Подставляем согласно алфавиту каждому номеру буквы ас 2 цифры, потому что трехзначное*77=пятизначное, три цифры у нас есть, две остальные находим перебором. |
Автор: mmvds 5.5.2008, 15:56 | ||
Button1- кнопка, Edit1 - вводим шифрованный текст Edit2 - сюда выведется расшифрованный текст Проверил работу программы на коде из условия: 317564404970017677550547850355 Результат строка: ключшифранайден |
Автор: Venom88 5.5.2008, 16:21 |
спасибо... |