Время

14:18:50
24 May 2012
Версия для печати

УЛИПО

   Однажды французский автор Жорж Перек (1936–1982) написал книгу La disparition без буквы  'e'. Он был членом группы УЛИПО (фр. OULIPO, сокращение от Ouvroir de littérature potentielle - объединение писателей и математиков, поставившее своей целью научное исследование потенциальных возможностей языка путём изучения известных и создания новых искусственных литературных ограничений, под которыми понимаются любые формальные требования к художественному тексту). Цитата из книги:

   Tout avait Pair normal, mais tout s’affirmait faux. Tout avait Fair normal, d’abord, puis surgissait l’inhumain, l’affolant. Il aurait voulu savoir où s’articulait l’association qui l’unissait au roman : stir son tapis, assaillant à tout instant son imagination, l’intuition d’un tabou, la vision d’un mal obscur, d’un quoi vacant, d’un non-dit : la vision, l’avision d’un oubli commandant tout, où s’abolissait la raison : tout avait l’air normal mais…

   Перек возможно получил бы высший (или наоборот, низший) бал в следующем соревновании. Необходимо написать текст (может даже бессмысленный) на некоторую тему, в котором как можно реже встречается заданное "слово". Жюри необходимо предоставить программу, которая подсчитывает количество вхождений этого слова в текст, таким образом установив рейтинг конкурсантов. Участники обычно пишут длинные бессмысленные тексты; например текст состоящий из  500,000 последовательных букв 'T' не является необычным. И еще они никогда не используют пробелы.

   Мы хотим быстро отвечать на вопрос как часто слово, то есть заданная строка, встречается в тексте. Более формально: имеется алфавит {'A', 'B', 'C', …, 'Z'} и две конечные строки над ним - слово W и текст T. Необходимо подсчитать сколько раз W встречается в T. Все последовательные символы W должны в точности совпадать с последовательными символами T. Вхождения слов могут пересекаться.


Технические условия

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

   Первая строка содержит количество тестов. Каждый тест имеет следующий формат:

   Первая строка содержит слово W, записанное в алфавите {'A', 'B', 'C', …, 'Z'}, где 1 ≤ |W| ≤ 10000 ( |W| обозначает длину строки W).

   Вторая строка представляет текст T, записанный в алфавите {'A', 'B', 'C', …, 'Z'}, где |W| ≤ |T| ≤ 1000000.

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

   Для каждого теста выведите в отдельной строке одно число - количество вхождений слова W в текст T.


Информация о задаче

Лимит времени: 1 секунда
Лимит памяти: 64 MB
Баллы за пройденный тест: 6.25
Сложность: 27% 27/37
Классификация: Алгоритмы на строках

Пример

Пример входных данных

3
BAPC
BAPC
AZA
AZAZAZA
VERDI
AVERDXIVYERDIAN

Пример выходных данных

1
3
0


← Получение аккордов Список задач Разворот префиксов →