P7644 [COCI2012-2013#5] LJESTVICA 题解
题目:P7644 [COCI2012-2013#5] LJESTVICA
思路:
本题只需将字符串从头到尾跑一遍即可,判断每个小节的第一个字符是哪种音节的主调(从题目中可知),然后再将那个音节的计数的变量上加
最后输出主调个数多的音阶。若相等,则查看字符串的最后一个字符,是什么字母就输出什么音阶。
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
string a;
cin>>a;
int n=a.size(),x=0,y=0;//x计C调主调的个数,y计A调主调的个数
for(int i=0;i<=n-1;i++){
if(i==0 || a[i-1]=='|'){//判断是不是每个小节的第一个,注意a[0]也是
if(a[i]=='C' || a[i]=='F' || a[i]=='G') x++;//C调主调
if(a[i]=='A' || a[i]=='D' || a[i]=='E') y++;//A调主调
}
}
if(x>y) cout<<"C-dur";
if(x<y) cout<<"A-mol";
if(x==y){//若主调个数相等
//查看最后一个字符
if(a[n-1]=='C') cout<<"C-dur";
else cout<<"A-mol";
}
return 0;
}