0
已解决
熊潇然
初级启示者
初级启示者
题目链接: 酷町堂:7245
7245 小红的乐谱
经验值:1200 时间限制:1000毫秒 内存限制:128MB
题目描述 Deion
小红很喜欢唱歌,元旦快到了,她想在学校的元旦晚会上表演唱歌。于是早早地就拿着乐谱准备排练了。同桌小明对小红的乐谱很好奇,小红告诉小明, A 小调音阶为 {A,B,C,D,E,F,G},C 大调音阶为{C,D,E,F,G,A,B}。每个音阶的第一个、第四个和第五个音称为主调。现在需要判断小红的乐谱是 A 小调还是 C 大调。
判断方法:判断乐谱中每一个小节的第一个音符,是A 小调的主调还是 C 大调的主调,最后判断哪个音阶的主调个数更多。
如果两者个数一样多,取整个乐谱的最后一个音符所属的音阶。最后一个音符为 A 则属于 A 小调,否则属于 C 大调
小明听着有点迷糊了,我们一起帮小明判断吧。
输入描述 Input Deion
输入一行,一个字符串,字符串中只包含大写字母ABCDEFG和“|”,“|”用来分隔小节。
输出描述 Output Deion
输出一行,一个字符串。如果是C大调,输出字符串“C-dur”;如果是A小调,输出字符串“A-mol”。
样例输入 Sample Input
ABDC|CDBA|GACF
样例输出 Sample Output
C-dur
数据范围及提示 Data Size & Hint
乐谱长度用s表示
5≤ s ≤100
错误代码 WA 50分:
#include<bits/stdc++.h>
using namespace std;
string s;
int c,a;
bool f;
int main(){
cin>>s;
s='|'+s;
for(int i=0;i<s.size();i++){
if(s[i]=='|'&&s[i+1]=='C'){
c++;
f=1;
}else if(s[i]=='|'&&s[i+1]=='A'){
a++;
f=0;
}
}
if(c>a){
cout<<"C-dur";
}else if(a>c){
cout<<"A-mol";
}else{
if(s[s.size()-1]=='A'){
cout<<"A-mol";
}else{
cout<<"C-dur";
}
}
return 0;
}
求大佬指点