Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Алгоритмы
Курсы ККДП
Дистрибутивы
Ссылки

HotLog


 

Юный гитарист

(Время: 2 сек. Память: 16 Мб Сложность: 57%)

Ваня решил заняться музыкой. Но какой музыкальный инструмент выбрать для изучения, он пока еще не решил. Его друг Женя, будучи немного постарше и опытнее, уже хорошо освоил гитару. Он хочет продемонстрировать Ване возможности игры на гитаре.

На гитаре шесть струн, каждая из них может быть зажата пальцем на определенном ладу или оставлена открытой (не прижатой ни на каком ладу), от этого изменяется нота, которая звучит, когда струна колеблется.

Чтобы продемонстрировать возможности инструмента, Женя ведет с Ваней такую беседу. Ваня называет некоторый аккорд, а Женя говорит ему, сколькими способами можно этот аккорд взять на гитаре, то есть выбрать на каждой струне лад и зажать его (или оставить ее открытой), чтобы этот аккорд зазвучал. Женя любит громкий звук, поэтому звучать должны все струны.

Нот в музыке, конечно, семь, но помимо них существуют еще полутона. Поэтому для удобства мы будем считать, что нот всего 12. Их обозначения такие: A, Bb, B, C, C#, D, D#, E, F, F#, G, G#.

Кроме этого, C# может быть обозначен как Db, Bb как A#, D# как Eb, F# как Gb, а G# как Ab. Обозначения нот приведены в порядке их следования, то есть за A идет Bb, за Bb идет B, . . . , за G# идет снова A. Расстояние между любыми двумя соседними нотами равно одному полутону.

Струн у гитары шесть, они занумерованы с 1 по 6. Каждая струна издает определенную ноту, когда звучит и не прижата ни на каком ладу. Совокупность нот, соответствующих открытым струнам, называется строем гитары. Если открытую струну, издающую ноту номер i, зажать на j-том ладу (лады нумеруются с единицы), то этой струной будет издаваться нота i + j, то есть, от ноты i надо сместиться на j нот по циклу. Например, если открытая струна издает ноту D, то зажав ее на третьем ладу, мы получим ноту F, а на восьмом – ноту Bb.

На гитаре Вани N ладов, поэтому 1 ≤ j ≤ N. Аккордов существует большое множество, но строятся они по общей схеме. Вначале выбирается так называемая тоника аккорда – нота, от которой он будет строиться. Затем остальные ноты аккорда выписываются уже относительно нее.

Запись аккорда состоит из двух частей. Первая часть – это всегда обозначение тоники аккорда. Вторая часть описывает само звучание аккорда. Мы ограничимся несколькими частными случаями.

Мажорный аккорд

К тонике добавляются ноты, отстоящие на 4 и 7 полутонов. Вторая часть записи этого аккорда пуста.
Пример: Eb, состоит из нот Eb, G, Bb.

Минорный аккорд

К тонике добавляются ноты, отстоящие на 3 и 7 полутонов.
Вторая часть записи этого аккорда состоит из маленькой английской буквы m.
Пример: Am, состоит из нот A, C, E.

Мажорный септаккорд

Образуется из мажорного аккорда путем добавления ноты, отстоящей от тоники на 10 полутонов.
Вторая часть состоит из цифры 7.
Пример: E7, состоит из нот E, B, G#, D.

Минорный септаккорд

Образуется из минорного аккорда путем добавления ноты, отстоящей от тоники на 10 полутонов.
Вторая часть состоит из буквы m и цифры 7.
Пример: Gm7, состоит из нот G, D, Bb, F.

Напишите программу, помогающую Жене отвечать на вопросы Вани. Учтите, что аккорд считается взятым на гитаре, если ни одна нота аккорда не пропущена и не взята ни одна нота, не принадлежащая аккорду. В отличие от реальной игры на гитаре, расстояние между ладами, на которых зажата хотя бы одна струна, может быть любым.

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

В первой строке входного файла INPUT.TXT содержится N – число ладов гитары (0 ≤ N ≤ 9). Во второй строке записан строй гитары – шесть нот, соответствующие шести струнам гитары. Ноты обозначены, как в тексте задачи, и отделены друг от друга пробелами. Регистр букв важен. В третьей строке записан аккорд, который надо взять на гитаре.

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

В выходной файл OUTPUT.TXT выведите количество способов взять данный аккорд на данной гитаре.

Примеры

INPUT.TXTOUTPUT.TXT
13
E B G D A E
C
4
20
A C E A C E
Am
1

Пояснения к примерам

Если обозначить вариант взятия аккорда шестью цифрами – номерами ладов, на которых зажаты струны с первой по шестую, считая открытую струну зажатой на нулевом ладу то в первом примере четыре способа таковы:

(0; 1; 0; 2; 3; 0)
(3; 1; 0; 2; 3; 0)
(0; 1; 0; 2; 3; 3)
(3; 1; 0; 2; 3; 3)

Во втором примере можно играть только на открытых струнах, зато гитара настроена ровно на требуемый аккорд.


Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!

[Обсуждение] [Все попытки] [Лучшие попытки]

Красноярский краевой Дворец пионеров, (c)2006 - 2020, E-mail: admin@acmp.ru