#P2326. Major Scales
Major Scales
题目描述
在音乐中,可听频率范围被划分为八度(octave),每个八度覆盖的频率范围为前一个八度的倍。例如,中央C(middle C)对应的频率为 Hz。比中央C低一个八度的频率范围为 Hz至 Hz,而高一个八度的频率范围为 Hz至 Hz。
一个八度包含个半音阶(chromatic notes),这些音符的频率按固定比例递增。相邻两个半音阶之间的间隔称为半音(semi-tone)或半阶。由于一个八度包含个半音,因此半音对应的频率比为(因为)。全音(tone)等于个半音。
虽然使用频率描述音符更为直接,但传统上我们使用特定的名称来表示半音阶的音符,按顺序为:
,并在每个新八度重复这一命名规则。
西方音乐通常不会使用所有半音阶音符,而是使用其中的个音符构成大调音阶(major scale)。大调音阶的个音符之间的间隔依次为:全音、全音、半音、全音、全音、全音、半音。大调音阶可以从任意半音阶音符开始,该起始音符决定了音阶的调性(key)。例如:
- C大调的音阶为:。
- F大调的音阶为:。
此外,还存在其他音阶(如小调音阶),但本题仅关注无临时变音记号(accidentals)的大调音阶音乐。
任务要求
给定一系列音符,判断这些音符可能属于哪些大调音阶。程序需满足:
- 仅当所有输入音符均属于某个大调音阶时,才输出该调性。
- 无需考虑音乐听觉问题,仅需按规则计算。
输入格式
- 输入包含多个测试用例,每个测试用例占一行,由一系列半音阶音符组成,以空格分隔。
- 每行不超过个字符。
- 输入以
END
结束。
输出格式
- 对于每个测试用例,输出一行,列出所有可能的调性(按半音阶顺序排列)。
输入样例 1
C C D F E G A A F G B
A B C D E F G C#
C C D F E G A A F G
C C C C C
END
输出样例 1
C
C F
C C# D# F G G# A#