Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 28.11.2019
Сообщений: 1

Олимпиадная задача PASCAL

28.11.2019, 09:37. Показов 1166. Ответов 5

Студворк — интернет-сервис помощи студентам
D. Заклинание
Ограничение времени: 1 секунда
Ограничение памяти: 64Mb
Ввод: spell.in
Вывод: spell.out


В Хогвартсе на уроках магии дети постигают науку формулировки заклинаний. На одном из последних занятий они познакомились с понятием магической силы заклинания. Магическая сила заклинания равна количеству повторений в этом заклинании основного магического сочетания символов. Например, если магическое сочетание "qqq то заклинание "qqqq"обладает магической силой 2, заклинание "qqrqq магической силой 0, а заклинание "qqwrnqqqjkookqqqiqqq магической силой 3. Напишите, пожалуйста программу, вычисляющую магическую силу заклинания.


Формат ввода:
Первая строка входного файла spell.in сожержит основное магическое сочетание - последовательность латинских строчных букв длиной не менее 2 и не более 300 символов. Вторая строка содержит заклинание - последовательность латинских строчных букв длиной не менее 2 и не более 3350000 символов.


Формат вывода:
В файл spell.out выведите единственное число - магическую силу заклинания.

Пример
Ввод:
ba
baaaabbabar
Вывод:
3

Примечания
Вы можете получить до 80 баллов за решение, которое работает для заклинаний длиной не более 1000 символов. Вы можете получить до 60 баллов за решение, которое работает для заклинаний длиной не более 400 символов.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2019, 09:37
Ответы с готовыми решениями:

Олимпиадная задача по программированию. PascalABC.NET. Задача L. Переключение между окнами
Когда пользователь работает в операционной системе Winux, у него часто запущено несколько приложений. Каждое из приложений работает в...

Считалка. Олимпиадная задача по программированию
Ирочка попросила маму придумать новую считалочку. Мама тут же ей "выдала". Пусть в кругу N человек. Это число N будем изменять...

Олимпиадная задача
Ребят мне её нужно срочно решить её, прошу вашей помощи. var x,i,j,s,y:integer; n:array of integer; m:array of integer; label...

5
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
29.11.2019, 04:05
Pascal
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
{$string_nullbased+}
 
function TestBuff(buff: array of char; ind: integer; ss: string): boolean;
begin
  for var i := 0 to buff.Length-1 do
    if ss[i] <> buff[ (i+ind) mod buff.Length ] then exit;
  Result := true;
end;
 
begin
  
  var sr := System.IO.File.OpenText('spell.in');
  // для тестов
//  var sr := new System.IO.StringReader(
//    'ba'#10
//    'baaaabbabar'
//  );
  
  var ss := sr.ReadLine;
  var c := 0;
  var buff := new char[ss.Length];
  
  if sr.ReadBlock(buff,0,buff.Length)=buff.Length then
  begin
    var i := 0;
    
    while true do
    begin
      if TestBuff(buff,i,ss) then c += 1;
      var ch := sr.Read;
      if ch=-1 then break;
      buff[i] := char(ch);
      i := (i+1) mod buff.Length;
    end;
    
  end;
  
  WriteAllText('spell.out', c.ToString);
//  c.Println; // тоже для тестов
  
end.
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
29.11.2019, 12:21
Цитата Сообщение от Sun Serega Посмотреть сообщение
var ss := sr.ReadLine;
ss переменная легко вместит 3 с лишним Мб ?
а после этого
Цитата Сообщение от Sun Serega Посмотреть сообщение
var buff := new char[ss.Length];
буфер ещё на 3 с лишним Мб ?
Без проблем?
1
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
29.11.2019, 13:16
mr-Crocodile, а зачем КМП писать?!
1
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
29.11.2019, 13:25
Цитата Сообщение от eaa Посмотреть сообщение
mr-Crocodile, а зачем КМП писать?!
пришлось загуглить.
Алгоритм Кнута — Морриса — Пратта (КМП-алгоритм) — эффективный алгоритм, осуществляющий поиск подстроки в строке. Время работы алгоритма линейно зависит от объёма входных данных, то есть разработать асимптотически более эффективный алгоритм невозможно.
1
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
30.11.2019, 00:31
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
ss переменная легко вместит 3 с лишним Мб ?
Вы так говорите, как будто это проблема. Ограничение памяти 64Мб.
И не важно какой алгоритм брать, образец всё равно надо сохранить 1 раз целиком. Читать из файла каждый раз будет и сложнее и дороже.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.11.2019, 00:31
Помогаю со студенческими работами здесь

Олимпиадная задача
program zad4; Var n,i,k:longint; c:char; Procedure closing; begin close(input); close(output); halt(0); end; ...

Олимпиадная задача
(см на картинке)

Олимпиадная задача №2
Фёдор решил написать игрушку для двух игроков на клетчатом поле w × h (ширина и высота соответственно). На поле находятся два игрока,...

Олимпиадная задача №4
Захар любит игры со словами. Но играть одному не интересно, поэтому Захар подсадил на эти игры соседа по парте — Славу. Бывает так, что...

Олимпиадная задача
1. Фильм Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt Вывод стандартный вывод или...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru