13059. HEX-Hell і зламаний рядок


Відправити розв'язок

Бали: 100
Time limit: 1.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Сергій втратив місце, де в редакторі шістнадцяткових кодів HEX-Hell знаходився його рядок. І, оскільки він великий молодець, самий рядок він зламав.

Нагадуємо, що один байт - дві шістнадцяткових цифри з діапазону \({[0-9A-F]}\). Послідовність кодів у редакторі в даний момент має довжину не більше \(125 \, 000\) байт (тобто в ній не більше \(250 \, 000\) символів, і вона має парну довжину).

А також, у Вас є Сергіїв бітовий рядок з нулів та одиниць, <<зламаний>> в деяких місцях (деякі біти будуть замінені на знаки \({?}\)).

Будь-ласка, для кожного можливого початку цього рядка в редакторі виведіть кількість нулів і одиниць, що збігаються. При цьому можна вважати, що знаки питання збігаються із чим завгодно! За цією інформацією, горе-Сергій розбереться зі своїми рядками сам. Тільки знайдіть кількість збігів!

Примітка

B2D6 у двійковому вигляді це \(10110010\,11010110\)

При прикладанні шаблону до першого байта отримуємо вісім збігів, а до другого - п'ять.

Формат вхідних даних

У вхідному файлі два непорожні рядки. Перший складається із символів від 0 до 9 і від A до F. Кількість таких символів парна і трохи більше \(250\,000\).

Другий рядок складається з нулів, одиниць та знаків питання. Його довжина кратна восьми (вона теж задає послідовність байт) і поміщається у чотирьох довжинах першого рядка (вона міститься у редактор).

Формат вихідних даних

Якщо довжина (у символах) першого рядка \(n\), а другого \(k\), то Вам необхідно вивести в першому рядку вихідного файлу \(n/2 - k/8 + 1\) цілих чисел - кількість біт, що збігаються, при прикладанні другого рядки до деякого місця першого рядка.

Прикладання впорядковані природним чином - зліва направо.

Приклад вхідних даних

B2D6
1011?010

Приклад вихідних даних

8 5

Коментарі

Ще немає коментарів.