|
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
|
|||||||||||
Поиск наиболее часто встречающейся подстроки в строке31.10.2014, 15:05. Показов 12709. Ответов 57
Метки нет (Все метки)
Прошло уже немало лет с тех пор, как Лич Сандро ушёл на заслуженный отдых. Иногда по вечерам, когда ему становится совсем тоскливо, он берёт в руки книгу, которую ему подарили воспитанники-маги по случаю выхода на пенсию.
Вот и сейчас великий маг взял с полки книгу и углубился в чтение. В одной из глав рассказывалось про знаменитое открытие Сандро — много лет назад он придумал универсальное заклинание. Оказалось, что любая его подстрока (последовательность подряд идущих букв) тоже является заклинанием, а сила любого заклинания равна количеству раз, которое это заклинание встречается в универсальном (например, строка «ue» встречается в строке «queue» дважды, а строка «aba» в строке «abababa» — трижды). Сейчас у Сандро много свободного времени, и он решил найти самое сильное заклинание. Помогите ему в этом. Исходные данные Единственная строка содержит универсальное заклинание, которое открыл Сандро. Заклинание — непустая строка из строчных латинских букв длиной не более 50. Результат Выведите любое из заклинаний, обладающих, по мнению Сандро, наибольшей силой. Пример
актуально
0
|
|||||||||||
| 31.10.2014, 15:05 | |
|
Ответы с готовыми решениями:
57
Вывести слово, наиболее часто встречающееся в строке Определить наиболее часто встречающийся символ в строке |
|
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
|
|
| 01.11.2014, 04:42 | |
|
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
| 01.11.2014, 11:40 | ||||||
1
|
||||||
| 01.11.2014, 19:36 | |
|
Проиграл я этот раунд - полетел с шашкой наголо и не смог реализовать алгоритм который в конце концов придумал, а тем временем Mr.X выложил свой красивый лаконичный вариант, по крайней мере k=12 он отрабатывает, и мне расхотелось реализовывать свой, т.к. он более громоздок. Вообще что-то последние дни ошибаюсь часто и чушь пишу - начиная с простейшей задачи удачных 6-значных билетов....
Не по теме: Высыпаться надо наверное.
0
|
|
|
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
|
|
| 01.11.2014, 22:30 | |
|
_Ivana, Mr.X, кстати, решение МрИкс работает правильно, но долго. Каюсь, забыл сказать лимиты времени и памяти. Но вот решение МрИкс можно существенно ускорить. А так оно в секунду не уложится.
0
|
|
| 02.11.2014, 02:39 | |||||||||||||||||||||||||||||||
|
Отоспался днем и с новой шашкой наваял вот такой код, вроде по всем проверкам и сравнениям с кодом Mr.X результаты совпадают, насчет скорости не знаю, но старался уложиться:
Добавлено через 13 минут UPD если k велико, то наверное факторизовать его будет лучше так:
Добавлено через 12 минут ЗЫ к примеру, для волшебного k=65488500 количество вариантов = 5775, моему алгоритму требуется массив как минимум в половину этого размера (понимаю что память ем, но такой вот шашечный алноритм), поэтому вышнаписанные в коде "размеры от балды" лучше задать с учетом диапазона входных аргументов:
UPD опечатка (хотя работает и с ней, но не оптимизированно) -
UPD вместо двух внутренних циклов заполнения вариантов можно сделать 1 - в 2 раза убыстрится алгоритм:
0
|
|||||||||||||||||||||||||||||||
|
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
|
|
| 02.11.2014, 02:47 | |
|
_Ivana, все эти оптимизации необязательны. и памяти это немного.
вот несколько рандомных тестов с ответами(колво пар в ответе) k == 605126698 ans == 27 k == 868358335 ans == 45 k == 515263202 ans == 9 k == 962014423 ans == 27 k == 801663315 ans == 27 k == 922261066 ans == 27 k == 551410418 ans == 243 k == 16099050 ans == 675 k == 391318452 ans == 1755 k == 178131676 ans == 45 k == 478576264 ans == 189 k == 5017407 ans == 9 k == 405733669 ans == 27 k == 613303310 ans == 243 k == 651939079 ans == 9 k == 711923016 ans == 567 k == 378091956 ans == 405 k == 652478286 ans == 81 k == 861791300 ans == 225 k == 324223628 ans == 45 Добавлено через 1 минуту _Ivana, решение написать?
0
|
|
| 02.11.2014, 02:53 | |
|
SlavaSSU, несколько тестов навскидку совпадают. Но в этом алгоритме и его реализации я уверен побольше чем в предыдущем, думаю тут все в порядке с результатами, я его сравнивал с выложенным Mr.X на достаточном количестве данных. А оптимизации - пытаюсь улучшить что возможно и несложно.
И в результате, скажите, доктор - мой код пройдет ограничения по скорости и памяти? Могу я считать, что победил задачу с шашкой или как? ![]() Добавлено через 1 минуту Решение - не знаю, может кто еще решает и хочет подумать без подсказок (хотя вероятность этого невелика ) Мне то конечно интересно посмотреть решение. Как и выслушать вашу оценку моего кода в сравнении с ним.
0
|
|
|
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
|
|
| 02.11.2014, 02:55 | |
|
_Ivana, тогда можешь допилить код так:
чтение из консоли, вывод в консоль без всяких "введите k" и т.д. и сначала надо вывести колво пар, а затем и сами пары. я отправлю его в систему.
0
|
|
| 02.11.2014, 03:08 | ||||||
|
Если я правильно понимаю, то будет что-то типа такого (хотя у меня тесты из файла не проходит почему-то, может не то читаю):
А, не, нормально вроде читает каждое новое k, и выводит результаты в один файл. Я сначала не тот входной файл подсунул Ну и в конце системпаузу конечно надо убрать, она пишет в файл кракозябры перекодированной кириллицы...
0
|
||||||
|
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
|
|
| 02.11.2014, 03:09 | |
|
_Ivana, превышено ограничение времени на тесте 21. там лимит по времени 2 секунды. он не уложился.
0
|
|
|
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
|
|
| 02.11.2014, 03:20 | |
|
_Ivana, решение.
a * b == (a + b) * k; a * b == a * k + b * k; a * b - a * k - b * k == 0; a * (b - k) - b * k == 0; a * (b - k) - b * k + (k^2 - k^2) == 0; a * (b - k) - k * (b - k) - k^2 == 0; (b - k) * (a - k) == k^2; произведение скобок равно числу, значит эти скобки - его делители. найдем все делители числа k^2 и таким образом найдем все пары (a, b);
1
|
|
| 02.11.2014, 03:23 | |
|
Красиво. А я дятел дошел только до 1/k = 1/a + 1/b и на этой формуле строил логику...
И k^2 как раз в лонг лонг влезает, специально ограничение размера дано максимальное. В общем, 1:0 в вашу пользу Теперь жду на своем поле, где поединок с Фарроу - рассчитываю сравнять счет
0
|
|
|
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
|
|
| 02.11.2014, 03:27 | |
|
_Ivana,
теперь еще 1 сложность. нам надо найти все делители числа k^2. все знают как за корень искать. так вот МрИкс и стал идти до корня числа k^2, т.е. до k, но k может быть около миллиарда. и тут надо воспользоваться тем, что чтобы найти все делители числа k^2, достаточно перебрать все пары делителей числа k. т.е. решение такое, находим все делители числа k(идя до корня т.е. всего до 10^5 грубо говоря). и кидаем все делители в векторок. теперь перебираем пару наших делитлей, умножаем их и получаем делитель k^2. все.
0
|
|
| 02.11.2014, 03:31 | ||
![]() Добавлено через 1 минуту Идея лежит на поверхности, и это то как раз не сложность - я написал свой пост до прочтения вашего.
0
|
||
|
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
|
|
| 02.11.2014, 03:33 | |
|
_Ivana, я, ксожалению, не знаю что такое фарроу. я читал тот топик - я ничего оттуда не знаю!
0
|
|
| 02.11.2014, 03:36 | |
|
Фамилие такое (С) Кот Матроскин
Но это не важно, там ссылка на топик с теорией вопроса, все очень просто. Суть - решение системы линейных уравнений 4*4 для получения коэффициентов полинома, проходящего через 4 очки равномерной сетки.
0
|
|
| 02.11.2014, 03:36 | |
|
Вывести слово, наиболее часто встречающееся в строке Поиск наиболее часто встречающихся слов
Поиск наиболее часто встречаемого слова на сайте Поиск наиболее часто встречающихся слов в файле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|