|
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
|
|||||||||||
Поиск наиболее часто встречающейся подстроки в строке31.10.2014, 15:05. Показов 12487. Ответов 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 | |
|
Вывести слово, наиболее часто встречающееся в строке Поиск наиболее часто встречающихся слов
Поиск наиболее часто встречаемого слова на сайте Поиск наиболее часто встречающихся слов в файле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|