Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337

Поиск пароля

12.08.2017, 16:27. Показов 2098. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Решил несложную задачу на строки, но в двух последних строках - ошибка выполнения. Помогите, пожалуйста, разобраться что не так в моей программе. Прошу не писать новый код, а помочь внести поправки в существующий.

Условие задачи:

Поиск пароля

Возможность отправлять закодированные сообщения во время Второй мировой войны была достаточно важной для союзников. Сообщения всегда отправлялись после их кодирования при помощи известного пароля. Иметь фиксированный пароль было небезопасно, поэтому возникла необходимость часто изменять его. Однако следовало разработать механизм отправления нового пароля. У одного из математиков, работавших в криптографической команде, возникла умная идея - отправить пароль, скрытый в самом сообщении. Интересным моментом было то, что получателю сообщения достаточно было знать только размер пароля, а потом найти его в полученном тексте.

Пароль размера n можно найти поиском в тексте наиболее часто встречаемой подстроки из n символов. После нахождения пароля все подстроки совпадающие с ним, удаляются из текста. Теперь пароль можно использовать для расшифровки сообщения.

Однако Ваша задача будет упрощена. Вам достаточно написать программу, которая по заданному размеру пароля и закодированному сообщению найдет пароль в соответствии с описанным выше алгоритмом.

Рассмотрим пример, в котором размер пароля равен трем (n = 3), а текст сообщения имеет вид baababacb. Паролем будет aba, потому что размер этой подстроки 3, она появляется чаще всего во всем тексте (дважды), а остальные шесть различных подстрок появляются только один раз (baa, aab, bab, bac, acb).

Входные данные:

Состоит из нескольких тестов. Каждый тест представляет собой одну строку, в которой находится длина пароля n (0 < n ≤ 10) и закодированное сообщение. Сообщение содержит только прописные буквы латинского алфавита, его длина не более 10^6 и не меньше n.

Выходные данные:

Для каждого теста в отдельной строке следует вывести искомый пароль. Если существует несколько паролей, удовлетворяющих задаче, то вывести лексикографически наименьший.

Входные данные:
3 baababacb

Выходные данные:
aba

Мое решение:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int N, end, x, y, k, max, pos;
    string str, s;
    string T[100000];
    while (getline(fin, str))
    {
        pos = str.find(' ');
        N = atoi(str.substr(0, pos).c_str());
        str = str.substr(pos + 1);
        end = N;
        end--;
        k = 0;
        for (int i = 0; i < str.size() - end; i++)
        {
            T[k++] = str.substr(i, N); //Заносим подстроки заданной длины в массив
        }
        sort(T, T + k); //Сортируем массив (для получения лексиграфически меньшего пароля)
        x = y = max = 0;
        for (int i = y; i < k; i++) //Пробегаем по массиву подстрок
        {
            if (T[i+1] == T[i])
            {
                x++;
            }
            else
            {
                y = x; //Запоминаем очередную длину цепочки повторяющихся подстрок
                x++;
                if (x > max)
                {
                    max = x; //Находим максимальное число повторов (после сортировки)
                    s = T[i]; //Находим пароль максимальной длины (лексиграфически меньший)
                }
                x = 0;
            }
        }
        fout << s << endl; //Выводим искомый пароль
    }
    fin.close();
    fout.close();
    system("pause");
    return 0;
}
Добавлено через 11 минут
Тему можно закрывать. Я ошибся с размером массива. Он должен быть на порядок выше. (10^6 - как сказано в условии). Это будет максимум для для подстроки длиной 1 из одинаковых символов.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.08.2017, 16:27
Ответы с готовыми решениями:

Поиск пароля по словарю
Уважаемые гуру с++! Помогите написать программу, какая загружает словарь в котором хранятся наиболее часто распространенные пароли затем. ...

Оценка безопасности пароля путем перебора пароля из словаря
Разработать программное обеспечение для оценки степени безопасности паролей пользователей. Я уже скачал пару словарей паролей из...

Поиск своего пароля..
Ситуация такая - посеял карточку с логином и паролем от инета.Все это сохранено у меня в подключении.Логин-то я переписать смогу,а вот где...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.08.2017, 16:27
Помогаю со студенческими работами здесь

Поиск мастер пароля для диска
Ребята, привет. Нужна помощь в поиске пароля на хард. Есть утилитка hdd_pw но она не работает под моей 7кой 64 разрядной... Есть у кого ХР,...

Нужна реализация. Поиск и сравнение пароля в базе
Всем привет. Нужна помощь в реализации... Суть вот какая... Текст в =&gt; md5 Получив md5 делаем поиск по базе, если есть, то...

В чем отличие сброса пароля и взлома пароля Windows 7 в терминах?
Почему религия позволяет удалять эту тему https://www.cyberforum.ru/windows7/thread2082426.html но не удалять эту ...

При смене пароля выдается сообщение, и его выкидывает на окно смены пароля
При создании нового пользователя ему выдается временный пароль, который нужно сменить при первом входе. На нескольких машинах обнаружилась...

Зопрос пароля, смена пароля
Привет всем. Подскажите как попроще задать в программе запрос пароля перед исполнением определенного кода, а при необходимости вдальнейшем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru