题解 P2614 【计算器弹琴】

· · 题解

主要是特殊字符处理,其他的一律default按音符算

#include <bits/stdc++.h>
using namespace std;
int n,T,st=0,Length;
double itime=0;                                         //乐谱长度
string s;
int main()
{
    ios::sync_with_stdio(false);
    cin>>n>>T;
    for(;cin>>s;st=0)                                   //读不到就结束了
    {
        Length=s.length();
        for(int i=0;i<Length;i++)
        {
            switch(s[i])                                //分析字符
            {
                case ' ':
                case '\r':
                case '\n':break;                        //空字符
                case '(':st++;break;                    //音符值减半
                case ')':st--;break;                    //音符值翻倍
                case '.':itime+=pow(0.5,st+1);break;    //半个音符
                default:itime+=pow(0.5,st);             //普通音符
            }
        }
    }
    cout<<(int)itime*60/T<<endl;                        //注意取整
    return 0;
}